常优   www.auu.name weibo.com/changyou52 @ 网络电视事业部 www.redis.io
<ul><li>关于  Redis  </li></ul><ul><li>Redis  vs Memcached </li></ul><ul><li>Redis  搭建 </li></ul><ul><li>一些经验 </li></ul><ul>...
定义  : 高性能的   key-value  内存数据库 <ul><ul><ul><li>官方性能测试 : </li></ul></ul></ul><ul><ul><ul><li>50 个并发环境下   SET :  110000 次  / ...
<ul><li>快,非常快 </li></ul><ul><li>易部署 </li></ul><ul><li>多语言 API </li></ul><ul><li>支持数据类型: string 、 list 、 sets 、 Sorted Set ...
<ul><li>关于  Redis  </li></ul><ul><li>Redis  vs Memcached </li></ul><ul><li>Redis  搭建 </li></ul><ul><li>一些经验 </li></ul><ul>...
Memcached Redis 存储类型 Strings <ul><li>Strings </li></ul><ul><li>Lists </li></ul><ul><li>Sets </li></ul><ul><li>Sorted Sets ...
性能对比  (  http://timyang.net/data/mcdb-tt-redis/  )  小数据 : 500w 的条记录;每个  value : 100 bytes Linux Centos 5.2 64bit Intel(R) ...
大数据: 500w 的条记录;每个  value : 20KB 性能对比  (  http://timyang.net/data/mcdb-tt-redis/  )
并发量 : 1~300 ;每个  value : 32 bytes 并发对比  ( http://antirez.com/post/redis-memcached-benchmark.html )
Redis  更好   !  。。。为什么?  <ul><li>Redis 基于事件机制的网络模型,使用小巧的事件处理框架  aeEvent ,而 </li></ul><ul><li>memcached 使用了相对庞大的开源事件库:  libe...
<ul><li>关于  Redis  </li></ul><ul><li>Redis  vs Memcached </li></ul><ul><li>Redis  搭建 </li></ul><ul><li>一些经验 </li></ul><ul>...
#  tar  xzf redis-2.2.4.tar.gz #  cd  redis-2.2.4 #  make [ Redis 命令说明  ] redis-server   : Redis 服务器的 daemon 启动程序 redis-cl...
3.  配置  redis.conf  (  http://www.auu.name/634/index.html  )  Redis 2.2.4  (  配置  ) Daemonize : 是否以后台 daemon 方式运行 Maxmemor...
4.  数据类型 <ul><li>string : 一个 key 对应一个 value </li></ul>Redis 2.2.4  (  数据类型  ) redis>  SET   foo  1 OK redis>  INCR   foo (...
<ul><li>List : 链表结构,主要功能是 push/pop ,实现队列、栈等数据结构 </li></ul>Redis 2.2.4  (  数据类型  ) A B C D E LPUSH mylist  ->  [ A, B, C, D...
<ul><li>List  适用场景: </li></ul>Redis 2.2.4  (  数据类型  ) <ul><li>论坛中的主题列表、回复列表 </li></ul><ul><li>微博中的用户关注列表、用户 feed 列表、用户关注 f...
<ul><li>set : </li></ul>集合,对集合的操作有添加删除元素,有对多个集合求交并差等操作 Redis 2.2.4  (  数据类型  ) redis>  SADD   newset   a (integer) 1 redis...
<ul><li>zset : </li></ul>他在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后, zset 会自动重新按新的值调整顺序 Redis 2.2.4  (  数据类型  ) redis> ...
<ul><li>Hash :   几个 key-value 放入一个 key 中, value 再作为一个 set 存入 </li></ul>Redis 2.2.4  (  数据类型  ) redis>  HSET  user   name  ...
<ul><li>Transactions :   MULTI 之后的命令都会放到一个队列中,直到使用  EXEC  命令或者使用 </li></ul><ul><li>DISCARD 丢弃所有的命令。 </li></ul>Redis 2.2.4 ...
5. Redis  命令  ( http://www.auu.name/1154/index.html ) Redis 2.2.4
6. API  -  C,  C#, Java,  python, Node.js, ruby,PHP #  wget  https://github.com/owlient/phpredis/zipball/2.1.1  #  unzip  ...
7.  持久化 <ul><li>Redis 通过 fork 产生子进程 </li></ul><ul><li>父进程继续处理 client 请求,子进程负责将快照写入文件 </li></ul><ul><li>父进程为新增数据创建副本 </li><...
<ul><li>AOF (Append-Only File) </li></ul>将每次修改数据的命令,追加到文件中 appendfsync  always appendfsync  everysec   // 默认配置 appendfsync...
8.  虚拟内存 Redis 2.2.4  ( VM ) VM  目的: <ul><ul><li>解决内存合理利用,冷热数据分离 </li></ul></ul>配置: 实现: vm-enabled   yes                  ...
9.  主从 port  6379   # 从库的端口  dbfilename  dump_slave.rdb   # 从库数据 slaveof  127.0.0.1 6380  # 主库的端口 配置从库  redis_slave.conf r...
<ul><li>关于  Redis  </li></ul><ul><li>Redis  vs Memcached </li></ul><ul><li>Redis  搭建 </li></ul><ul><li>一些经验 </li></ul><ul>...
到底要不要  持久化? <ul><li>内存大量消耗引起系统瓶颈 </li></ul><ul><li>通过  copy-on-write  把内存里的数据写入磁盘,所以,一旦  </li></ul><ul><li>dump 时,有写操作,则需要...
Snapshot : <ul><li>使用  AOF  代替  snapshot </li></ul>AOF : 持久化的粒度较小:对性能有较大影响,磁盘大量 io 操作 持久化的粒度较大:宕机会丢失最后一次快照后的所有修改 记录每次修改语句,...
<ul><li>Redis VM  不靠谱,作者说新版本将放弃 VM </li></ul><ul><ul><li>关闭虚拟内存,加大物理内存或者做数据 sharding </li></ul></ul>方案: 不要使用  VM ! 使用虚拟内存后...
<ul><li>配置: </li></ul><ul><li>1K 的数据量 </li></ul><ul><li>物理内存 24G </li></ul><ul><li>开启 VM ,最大内存 8G </li></ul><ul><li>开启压缩 <...
使用  hset  代替 set 对象: video id  :  1 name  :  funny game time  :  100 created_time  :  129014998 <ul><li>适用场景: key 比较少的同一对象...
Master Slave Replcation 纯内存 备份 , 持久化 主从  架构 <ul><li>Redis  缺少同步机制常见的 check point 和校验机制 </li></ul><ul><li>如果同步请求转发丢失 ,  一致性...
<ul><li>分布式缓存  ( 一致性哈希 ) </li></ul>分布式  架构   预留 6G <ul><li>单机多节点  (  节点数 =CPU - 1 ) </li></ul>Redis1 : 6380 Redis2 : 6381 ...
分布式  架构   应用层 sharding master1 slave1 master2 slave2 slave3 master3 备份 备份 备份 R/W R/W R/W <ul><li>sharding  数据分片 </li></ul>
<ul><li>Redis  需仔细规划 </li></ul><ul><li>内存限制? </li></ul><ul><li>存什么数据? </li></ul><ul><li>数据增多,如何扩展? </li></ul><ul><li>读写瓶颈,...
驾驭能力是关键!! <ul><li>是否适合当前应用场景 </li></ul><ul><li>团队能不能驾驭  </li></ul><ul><li>如何解读 Redis </li></ul>
<ul><li>关于  Redis  </li></ul><ul><li>Redis  vs Memcached </li></ul><ul><li>Redis  搭建 </li></ul><ul><li>一些经验 </li></ul><ul>...
<ul><li>Cluster </li></ul><ul><li>  Auto sharding </li></ul><ul><li>  Fault tolerance </li></ul><ul><li>Persistence </li><...
参考 http://www.redis.io/ http://blog.mjrusso.com/2010/10/17/redis-from-the-ground-up.html http://pauladamsmith.com/articles...
Thanks 常优   www.auu.name weibo.com/changyou52 Q / A
Upcoming SlideShare
Loading in …5
×

Redis

5,031 views

Published on

Published in: Technology
  • Be the first to comment

Redis

  1. 1. 常优 www.auu.name weibo.com/changyou52 @ 网络电视事业部 www.redis.io
  2. 2. <ul><li>关于 Redis </li></ul><ul><li>Redis vs Memcached </li></ul><ul><li>Redis 搭建 </li></ul><ul><li>一些经验 </li></ul><ul><li>TODOs </li></ul><ul><li>关于 Redis </li></ul>
  3. 3. 定义 : 高性能的 key-value 内存数据库 <ul><ul><ul><li>官方性能测试 : </li></ul></ul></ul><ul><ul><ul><li>50 个并发环境下 SET : 110000 次 / S </li></ul></ul></ul><ul><ul><ul><li>GET : 81000 次 / S </li></ul></ul></ul>Redis :
  4. 4. <ul><li>快,非常快 </li></ul><ul><li>易部署 </li></ul><ul><li>多语言 API </li></ul><ul><li>支持数据类型: string 、 list 、 sets 、 Sorted Set </li></ul><ul><li>具有原子性操作 pop/push </li></ul><ul><li>持久化 </li></ul><ul><li>支持的 master/slave 复制 </li></ul><ul><li>支持虚拟内存 </li></ul>Redis feature :
  5. 5. <ul><li>关于 Redis </li></ul><ul><li>Redis vs Memcached </li></ul><ul><li>Redis 搭建 </li></ul><ul><li>一些经验 </li></ul><ul><li>TODOs </li></ul><ul><li>Redis vs Memcached </li></ul>
  6. 6. Memcached Redis 存储类型 Strings <ul><li>Strings </li></ul><ul><li>Lists </li></ul><ul><li>Sets </li></ul><ul><li>Sorted Sets </li></ul><ul><li>Hashes </li></ul>原子性操作 不支持 pop/push 虚拟内存 不支持 支持 主从 不支持 ( MemcachedDB ) 支持 内存达到临界 <ul><li>LUR 算法踢出冷数据 </li></ul><ul><li>配置 expire </li></ul><ul><li>无法接收新的写请求 </li></ul><ul><li>或启用 VM ,将冷数据写入 swap </li></ul>持久化 不支持 ( MemcachedDB ) <ul><li>快照 </li></ul><ul><li>AOF </li></ul>
  7. 7. 性能对比 ( http://timyang.net/data/mcdb-tt-redis/ ) 小数据 : 500w 的条记录;每个 value : 100 bytes Linux Centos 5.2 64bit Intel(R) Xeon(R) CPU E5410  8G memory SCSI disk
  8. 8. 大数据: 500w 的条记录;每个 value : 20KB 性能对比 ( http://timyang.net/data/mcdb-tt-redis/ )
  9. 9. 并发量 : 1~300 ;每个 value : 32 bytes 并发对比 ( http://antirez.com/post/redis-memcached-benchmark.html )
  10. 10. Redis 更好 ! 。。。为什么? <ul><li>Redis 基于事件机制的网络模型,使用小巧的事件处理框架 aeEvent ,而 </li></ul><ul><li>memcached 使用了相对庞大的开源事件库: libevent </li></ul><ul><li>Redis 是单线程,而 memcached 是单进程多线程,所以,为防止资源争夺, </li></ul><ul><li>memcached 使用 了 CAS 协议,带来 cpu 内存消耗 </li></ul>
  11. 11. <ul><li>关于 Redis </li></ul><ul><li>Redis vs Memcached </li></ul><ul><li>Redis 搭建 </li></ul><ul><li>一些经验 </li></ul><ul><li>TODOs </li></ul><ul><li>Redis 搭建 </li></ul>
  12. 12. # tar xzf redis-2.2.4.tar.gz # cd redis-2.2.4 # make [ Redis 命令说明 ] redis-server : Redis 服务器的 daemon 启动程序 redis-cli : Redis 命令行操作工具 redis-benchmark : Redis 性能测试工具 1. 安装 # ./src/redis-server /etc/redis.conf 2. 启动 Redis 2.2.4 (安装,启动)
  13. 13. 3. 配置 redis.conf ( http://www.auu.name/634/index.html ) Redis 2.2.4 ( 配置 ) Daemonize : 是否以后台 daemon 方式运行 Maxmemory : 分配多少内存 Port : 监听的端口号 Loglevel : log 信息级别 databases : 开启数据库的数量 rdbcompression : 是否使用压缩 save * * : 保存快照的频率 dir : 数据快照的保存目录 appendonly : 是否开启 appendonlylog appendfilename : 指定更新日志文件名 appendfsync : appendonlylog 如何同步到磁盘 vm-swap-file : tmp/redis.swap 设置虚拟内存的交换文件路径 Activerehashing : 开启之后, redis 将在每 100 毫秒时使用 1 毫秒的 CPU 时间来对 redis 的 hash 表进行重新 hash ,可以降低内存的使用。 。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  14. 14. 4. 数据类型 <ul><li>string : 一个 key 对应一个 value </li></ul>Redis 2.2.4 ( 数据类型 ) redis> SET foo 1 OK redis> INCR foo (integer) 2 redis> INCR foo (integer) 3 redis> GET foo &quot;3&quot; redis> SET foo terry OK redis> INCR foo (error) ERR value redis> EXPIRE foo 10 (integer) 1 redis> TTL foo 10 <ul><li>incr(key) : 名称为 key 的 string 增 1 操作 </li></ul><ul><li>decr(key) : 名称为 key 的 string 减 1 操作 </li></ul><ul><li>mget(key1, key2,…,) : 返回库中多个 string 的 value </li></ul><ul><li>mset(key1, value1, key2, value2….) : 同时给多个 string 赋值 </li></ul>
  15. 15. <ul><li>List : 链表结构,主要功能是 push/pop ,实现队列、栈等数据结构 </li></ul>Redis 2.2.4 ( 数据类型 ) A B C D E LPUSH mylist -> [ A, B, C, D, E ] LPOP RPOP RPUSH LREM mylist 0 C LINDEX mylist 4 LRANGE mylist 1 2
  16. 16. <ul><li>List 适用场景: </li></ul>Redis 2.2.4 ( 数据类型 ) <ul><li>论坛中的主题列表、回复列表 </li></ul><ul><li>微博中的用户关注列表、用户 feed 列表、用户关注 feed 列表 </li></ul><ul><li>好友推荐,排行榜 </li></ul><ul><li>消息队列 </li></ul>
  17. 17. <ul><li>set : </li></ul>集合,对集合的操作有添加删除元素,有对多个集合求交并差等操作 Redis 2.2.4 ( 数据类型 ) redis> SADD newset a (integer) 1 redis> SADD newset b (integer) 1 redis> SADD newset c (integer) 1 redis> SADD myset b (integer) 1 redis> SINTER newset myset # 求交集 1. &quot;b&quot; redis> SUNION newset myset # 求并集 1. &quot;a&quot; 2. &quot;b&quot; 3. &quot;c“ redis> SMOVE newset myset a (integer) 1 redis> SCARD newset (integer) 2 小红, ,小刚 小兰, ,小铁 小王 小王 SINTER Afollowers Bfollowers
  18. 18. <ul><li>zset : </li></ul>他在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后, zset 会自动重新按新的值调整顺序 Redis 2.2.4 ( 数据类型 ) redis> ZADD days 1 Mon (integer) 0 redis> ZADD days 3 Wed (integer) 1 redis> ZADD days 2 Tue (integer) 1 redis> ZRANGE days 0 -1 1. &quot;Mon&quot; 2. &quot;Tue&quot; 3. &quot;Wed&quot;
  19. 19. <ul><li>Hash : 几个 key-value 放入一个 key 中, value 再作为一个 set 存入 </li></ul>Redis 2.2.4 ( 数据类型 ) redis> HSET user name changyou (integer) 1 redis> HSET user work www.cntv.cn (integer) 1 redis> HGET user name &quot;changyou&quot; redis> HGETALL user 1. &quot;name&quot; 2. &quot;changyou&quot; 3. &quot;work&quot; 4. &quot;www.cntv.cn &quot; 当你存储的数据对象只有很少几个 key 值时,内存消耗会很小 特点:
  20. 20. <ul><li>Transactions : MULTI 之后的命令都会放到一个队列中,直到使用 EXEC 命令或者使用 </li></ul><ul><li>DISCARD 丢弃所有的命令。 </li></ul>Redis 2.2.4 ( 数据类型 ) redis> MULTI OK redis> SET foo 0 QUEUED redis> INCR foo QUEUED redis> INCR foo QUEUED redis> EXEC 1. OK 2. (integer) 1 3. (integer) 2 redis> GET foo &quot;2&quot; redis> MULTI OK redis> SET bar 0 QUEUED redis> INCR bar QUEUED redis> INCR bar QUEUED redis> DISCARD OK redis> GET bar &quot;0&quot; 可使用 MULTI 命令可实现简单事务
  21. 21. 5. Redis 命令 ( http://www.auu.name/1154/index.html ) Redis 2.2.4
  22. 22. 6. API - C, C#, Java, python, Node.js, ruby,PHP # wget https://github.com/owlient/phpredis/zipball/2.1.1 # unzip owlient-phpredis-5a07edc.zip # cd owlient-phpredis-5a07edc /usr/local/web/php/bin/phpize # ./configure -with-php-config=/usr/local/web/php/bin/php-config # make # make install <?PHP $redis = new redis(); $redis - > connect (‘127.0.0.1′,6379 ); $redis -> set (‘test_key’,'hello world!’); echo $redis -> get (‘test_key’); ?> phpredis : Redis 2.2.4 ( API )
  23. 23. 7. 持久化 <ul><li>Redis 通过 fork 产生子进程 </li></ul><ul><li>父进程继续处理 client 请求,子进程负责将快照写入文件 </li></ul><ul><li>父进程为新增数据创建副本 </li></ul><ul><li>子进程 dump 完成后,父进程用副本代替原来的快照 </li></ul><ul><li>子进程退出 </li></ul>save 900 1 #900 秒超过 1 个 key 被修改 save 300 10 #300 秒超过 10 个 key 被修改 save 60 10000 #60 秒超过一万条被修改 频率控制 ( redis.conf ) : 过程: 缺点: <ul><ul><li>磁盘 I/O 大, CPU 使用率高 </li></ul></ul>Redis 2.2.4 ( 持久化 ) <ul><li>SnapShot (快照方式) </li></ul>
  24. 24. <ul><li>AOF (Append-Only File) </li></ul>将每次修改数据的命令,追加到文件中 appendfsync always appendfsync everysec // 默认配置 appendfsync no 日志写入频率控制 : 缺点: <ul><ul><li>开启 AOF 后,影响 Redis 性能,但不大 </li></ul></ul><ul><ul><li>日志随数据增加而越来越庞大 </li></ul></ul>AOF : Redis 2.2.4 ( 持久化 )
  25. 25. 8. 虚拟内存 Redis 2.2.4 ( VM ) VM 目的: <ul><ul><li>解决内存合理利用,冷热数据分离 </li></ul></ul>配置: 实现: vm-enabled yes                  # 开启 vm 功能 vm-swap-file /tmp/redis.swap      # 交换出来的 value 保存的文件路径 vm-max-memory 1000000      #redis 使用的最大内存上限,超过开始交换 vm-page-size 32                     # 每个页面的大小 32 个字节 vm-pages 134217728             # 交换文件的大小 = vm-page-size * vm-pages vm-max-threads 4             # 用于执行 value 对象换入换出的工作线程数量 为了控制交换的粒度, Redis 自己实现了一条 VM 机制 超出最大使用内存时,通过 LRU 算法,将一部分数据 swap 到磁盘
  26. 26. 9. 主从 port 6379 # 从库的端口 dbfilename dump_slave.rdb # 从库数据 slaveof 127.0.0.1 6380 # 主库的端口 配置从库 redis_slave.conf redis-server  /etc/redis_slave.conf 启动从库 Redis 2.2.4 ( replication ) <ul><li>工作原理 </li></ul><ul><ul><li>建立连接,从库向主库发送同步请求 </li></ul></ul><ul><ul><li>主库开启新线程保存当前数据为文件,主线程继续处理 client 写请求并缓存 </li></ul></ul><ul><ul><li>主库向从库传文件,从库保存文件并加载到内存中 </li></ul></ul><ul><ul><li>主库把刚才 client 请求的缓存命令转发给从库 </li></ul></ul><ul><ul><li>后续主库收到的写命令都会发送给从库 </li></ul></ul>
  27. 27. <ul><li>关于 Redis </li></ul><ul><li>Redis vs Memcached </li></ul><ul><li>Redis 搭建 </li></ul><ul><li>一些经验 </li></ul><ul><li>TODOs </li></ul><ul><li>一些经验 </li></ul>
  28. 28. 到底要不要 持久化? <ul><li>内存大量消耗引起系统瓶颈 </li></ul><ul><li>通过 copy-on-write 把内存里的数据写入磁盘,所以,一旦 </li></ul><ul><li>dump 时,有写操作,则需要额外内存 </li></ul>copy-on-write ? 父进程 fork 子进程,子进程指向父进程的地址空间,而当子进程真正执行写操作时,才会真正复制子进程空间 原因: 症状: 内存占用翻番,子进程独享一个 cpu 核心,占用 100% ,如内存不够,时间久了宕机 <ul><li>开启了数据压缩 </li></ul><ul><li>Redis 作者强调:最佳使用方式是 in-memory </li></ul>
  29. 29. Snapshot : <ul><li>使用 AOF 代替 snapshot </li></ul>AOF : 持久化的粒度较小:对性能有较大影响,磁盘大量 io 操作 持久化的粒度较大:宕机会丢失最后一次快照后的所有修改 记录每次修改语句, 类似 MySQL binlog ,而且日志可读 <ul><li>将内存中的数据以命令的方式保存到临时文件中,最后替换原来的文件 </li></ul><ul><li>之前可能用了 10w 次操作共改变了 100 条数据,那这时 AOF 中的 10w 条写操作记录 </li></ul><ul><li>就变成了 100 条记录 </li></ul><ul><li>使用 AOF 持久,需人肉调用 bgrewriteaof 命令整理日志 </li></ul><ul><li>必须预留一半内存 </li></ul>如果选择 持久化 !
  30. 30. <ul><li>Redis VM 不靠谱,作者说新版本将放弃 VM </li></ul><ul><ul><li>关闭虚拟内存,加大物理内存或者做数据 sharding </li></ul></ul>方案: 不要使用 VM ! 使用虚拟内存后,内存使用量明显下降;但是在插入数据后 (sadd) ,虚拟内存里的数据基本上都跑到内存中,也没有回去的意思;最后在数据 dump 的时候内存彻底耗光, CPU100% 症状:
  31. 31. <ul><li>配置: </li></ul><ul><li>1K 的数据量 </li></ul><ul><li>物理内存 24G </li></ul><ul><li>开启 VM ,最大内存 8G </li></ul><ul><li>开启压缩 </li></ul><ul><li>VM 性能测试 </li></ul>
  32. 32. 使用 hset 代替 set 对象: video id : 1 name : funny game time : 100 created_time : 129014998 <ul><li>适用场景: key 比较少的同一对象中 </li></ul>HSET video:1 name “funny game” HSET video:1 time 100 HSET video:1 created_time 129014998 --------------------------------------------------- HLEN video:1 == 3 HGET video:1 name == “funny game” HKEYS video:1 == name , time , created_time HGETALL video:1 == name => funny game time => 100 created_time => 129014998
  33. 33. Master Slave Replcation 纯内存 备份 , 持久化 主从 架构 <ul><li>Redis 缺少同步机制常见的 check point 和校验机制 </li></ul><ul><li>如果同步请求转发丢失 , 一致性无法保证,只有 slave 重启时全量加载才能修复 </li></ul>方案: 主库在内存中运行,从库不提供线上服务只做持久化 备份
  34. 34. <ul><li>分布式缓存 ( 一致性哈希 ) </li></ul>分布式 架构 预留 6G <ul><li>单机多节点 ( 节点数 =CPU - 1 ) </li></ul>Redis1 : 6380 Redis2 : 6381 Redis3 : 6382 每天 3 点 每天 4 点 每天 2 点 6G 6G 6G redis redis redis redis <ul><li>分时间段 bgrewriteaof </li></ul><ul><li>充分提高内存使用率 </li></ul>
  35. 35. 分布式 架构 应用层 sharding master1 slave1 master2 slave2 slave3 master3 备份 备份 备份 R/W R/W R/W <ul><li>sharding 数据分片 </li></ul>
  36. 36. <ul><li>Redis 需仔细规划 </li></ul><ul><li>内存限制? </li></ul><ul><li>存什么数据? </li></ul><ul><li>数据增多,如何扩展? </li></ul><ul><li>读写瓶颈,如何扩展? </li></ul><ul><li>不仅要规划,还要严密监控 </li></ul>规划 / 监控
  37. 37. 驾驭能力是关键!! <ul><li>是否适合当前应用场景 </li></ul><ul><li>团队能不能驾驭 </li></ul><ul><li>如何解读 Redis </li></ul>
  38. 38. <ul><li>关于 Redis </li></ul><ul><li>Redis vs Memcached </li></ul><ul><li>Redis 搭建 </li></ul><ul><li>一些经验 </li></ul><ul><li>TODOs </li></ul><ul><li>TODOs </li></ul>
  39. 39. <ul><li>Cluster </li></ul><ul><li> Auto sharding </li></ul><ul><li> Fault tolerance </li></ul><ul><li>Persistence </li></ul><ul><li>Diskstore </li></ul>LRU Cache-Flush-Delay
  40. 40. 参考 http://www.redis.io/ http://blog.mjrusso.com/2010/10/17/redis-from-the-ground-up.html http://pauladamsmith.com/articles/redis-under-the-hood.html http://pauladamsmith.com/blog/2011/03/redis_get_set.html http://timyang.net/tag/redis/ http://searchwiki.taobao.ali.com/index.php/Redis-2.0.4_RTFSC http://simonwillison.net/static/2010/redis-tutorial/ http://www.rediscookbook.org/
  41. 41. Thanks 常优 www.auu.name weibo.com/changyou52 Q / A

×