redis

2019-01-24  本文已影响0人  哓晓的故事

1. 持久化

RDB(快照):

AOP(增量):

2. 支持类型

  1. string (int/embstr/raw)
  2. list (ziplist/linkedlist)
  3. hash (hashtable/ziplist)
  4. set(无序) (hashtable/intset)
  5. zset(有序) (skiplist/ziplist) 通过double分数来排序

3. 单线程为什么快

  1. 操作基本都是基于内存,不消耗cpu,速度够快,不需要多进程
  2. 采用多路复用非阻塞I/O方式, 监听多个链接
    • 内部采用reactor模式, 事件驱动
    • I/O多路复用处理器会将产生事件的套接字入队列, 文件事件分派器读队列, 将事件分配给对应的处理器
  3. 单线程, 减少了上下文切换损耗

4. redis集群方案

4.1 主从复制

主master写,从slave读
初始化时,slave放松syn给master,master将快照传递给slave,slave加载
非初始化,每次master写都会sync给slave

4.2 哨兵

4.3 集群

  1. 自动将数据进行分片(slot),每个master上放一部分数据
  2. 提供内置的高可用支持,部分master不可用时,还是可以继续工作的
  3. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽

现在要将Master A节点中编号为1、2、3的slot迁移到Master B节点中,在slot迁移的中间状态下,slot 1、2、3在Master A节点的状态表现为MIGRATING(迁移),在Master B节点的状态表现为IMPORTING(入口) - 而迁移过程中(不刷新node-slot的映射关系),还是有A节点提供服务,直到slot迁移完成

  1. 将A节点 键值空间dump下来
  2. 在B节点 将dump文件restore
  3. 将A节点 键值空间删除
  4. 刷新node映射关系
上一篇 下一篇

猜你喜欢

热点阅读