redis总结

redis需要了解的模块:基于redis3总结http://wiki.jikexueyuan.com/project/redis-guide/replication.html

0、redis层级架构:单进程单线程,IO多路复用技术

1、数据类型

2、分片

3、复制-即主从

4、分片方案:rediscluster/代理/客户端,每个方案的成熟度研究

5、主从的高可用方案HA:redis-sentinel

6、持久化

 

3、复制-主从

(1)主从特点:

  • Redis 采用异步复制。从 Redis 2.8 开始,从服务器会周期性地报告从复制流中处理的数据量。 一个主服务器可以拥有多个从服务器。
  • 从服务器可以接受其他从服务器的连接。除了连接多个从服务器到同一个主服务器,从服务器也可以连接到其他的从服务器,形成图状结构
  • Redis 的复制在主服务器上是非阻塞的。这意味着,当一个或多个从服务器执行初始化同步(initial synchronization)时,主服务器能继续处理请求。
  • Redis 的复制在从服务器上也是非阻塞的。当从服务器正在执行初始化同步时,假如你在redis.conf 中进行了相应配置,也能够继续使用旧版本的数据集处理请求。另外,你还可以配置当复制流宕(dowm)掉的时候,从服务器返回给客户端一个错误。然而,初始化同步结束后,旧的数据集需要被删除,新的数据集需要被载入。在这个简短的窗口期内,从服务器会阻塞到来的连接。还是会删除旧数据,以此保证从完全是副本。
  • 复制可以用来支持可伸缩性,用多个从服务器处理只读查询(例如,繁重的 SORT 操作可以分配到从服务器上),也可以仅仅作为数据冗余
  • 可以使用复制来避免主服务器将全部数据集写到磁盘的开销:只需要配置你的主服务器的 redis.conf 来防止保存(所有的” 保存” 指令),然后连接一个不断复制的从服务器。但是,这种设置下要确保主服务器不会自动重启(阅读下一节获取更多信息)。

(2)复制具体如何工作:

  当刚启动初始化从服务器时:

  (a)主从建立sync链接->主开始生成当前RDB文件,并缓存当前写命令-》发生RDB文件到从服务器,从服务器丢弃旧数据,完成初始化-》接受主的剩余同步命令。

     当主从网络断开:部分同步

     当主挂掉后重启:

  像初始化一样,完整复制。

 

读写分离:每个服务器都是redis,当然都是可以读写的,除非设置了只读,所以从也是可以写的。你可能很好奇,为什么需要能够反转只读设置,使得从服务器实例能够成为写操作的目标。尽管这些写入的数据会在从服务器和主服务器再次完整同步时(如从服务器重启)被丢弃,还是有一些存储一些短暂的数据到可写的从服务器的合理场景。例如,客户端可以存储一些主服务器的可达性信息来调整故障转移(failover)策略(即替换主服务器)也就是为了从随时可以成为主。如A<-B<-C<-D链表结构,如果主A挂了,立马连接B写就好了。

posted @ 2017-04-03 03:53  muffe  阅读(184)  评论(0编辑  收藏  举报