首页 > 代码库 > redis

redis

  • redis简介

  REmote Dictionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和Memcached缓存服务很像,但是redis支持的数据存储更丰富,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。

  这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached缓存服务一样,为了保证效率,数据都是缓存在内存中提供服务。和memcached不同的是,redis持久化缓存服务还会周期性的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,比memcached更有优势的是,redis还支持master-slave(主从)同步,这点很类似关系型数据库MySQL。

  redis的出现,再一定程度上弥补了memcached这类key-value内存缓存服务的不足,在部分场合可以对关系数据库起到很好的补充作用。redis提供了Python、Ruby、Erlang,PHP客户端,使用很方便。

官方文档

http://www.redis.io/documentation

http://www.redis.cn/

Redis的优点

  • 与memcached不同,可以持久化存储数据
  • 性能很高:redis能支持超过100K+每秒的读写频率
  • 丰富的数据类型:Redis支持二进制的Strings,Lists,Hashes,Sets及Ordered Sets等数据类型操作。
  • 原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性:Redis还支持publish/subscribe,通知,key过期等等特性。
  • redis支持异机主从复制。

redis的应用场景

  传统的MySQL+Memcached的网站架构遇到的问题:

  mysql数据库实际上是适合进行海量数据存储的,加上通过Memcached将热点数据存放到内存cache里,达到加速数据访问的目的,绝大部分公司都曾使用过这样的架构,但随着业务数据量的不断曾加,和访问量的持续曾长,很多我呢提就会暴露出来:

1、需要不断的对MySQL进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发运维时间。

2、Memcahced与MySQL数据库一致性问题是个老大难。

3、Memcached数据命中率低或down机,会导致大量访问直接穿透到数据库,导致MySQL无法支撑访问。

4、跨机房cache同步一致性问题。

redis的最佳应用场景:

1、Redis最佳使用场景是全部数据in-memory。

2、Redis更多场景是作为Memcached的替代品来使用。

3、当需要除key/value之外的更多数据类型支持时,使用Redis更合适。

4、支持持久化

5、需要负载均衡的场景(redis主从同步)

 

redis