zoukankan      html  css  js  c++  java
  • 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写就好了。

  • 相关阅读:
    TCP协议详解-IPv4
    welcome to my cnblog
    怎样解决闭包造成的内存泄漏
    跳转路由后请求失败
    vant grid组件图片加载问题
    3次握手
    res.send()传参----Invalid status code: 1
    堆栈总结
    jQuery实现全选
    phpstudy_pro打开MySQL服务,一闪一闪的
  • 原文地址:https://www.cnblogs.com/muffe/p/6660253.html
Copyright © 2011-2022 走看看