《Redis设计与实现》Part03 第15章~第17章

第15章 复制 在redis中可以通过slaveof命令或者选项,让一个服务器取复制另一个服务器 旧版复制功能的实现 两个操作: 同步(sync) 命令传播(command propagate) 旧版复制功能的缺陷 初次复制 断线后重新复制 (效率低) sync是一个非常耗费资源的操作 新版复制功能的实现 使用psync,它的两种模式: 完整重同步 部分重同步 部分重同步的实现 主服务器的复制偏移量 从服务器的复制偏移量 主服务器的复制积压缓冲区 固定长度的先进先出队列,默认1MB 可以根据公式second * write_size_per_second来估算 服务器的运行id PSYNC命令的实现 复制的实现 设置主服务器的地址和端口 建立套接字连接 发送ping命令 身份验证 发送端口信息 同步 命令传播 心跳检测 在命令传播阶段,从服务器默认以每秒一次的频率,向主服务器发送命令replconf ack <replication_offset> 该命令有三个作用: 检查主从服务器的网络连接状态 辅助实现min-slave选项 min-slaves-to-write和min-slaves-max-lag两个选项可以防止主服务器在不安全的情况下执行写命令 检测命令丢失 检测到写命令丢失,则部分同步 第16章 Sentinel 由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主从服务器...

created: 2023-04-04  |  updated: 2023-04-04  |  阿秀

《Redis设计与实现》Part04 第18章~第24章

第18章-发布与订阅 publish subscribe,unsubscribe psubscribe,punsubscribe pubsub 18.1 频道的订阅与退订 redis将所有频道的订阅关系都保存在字典pubsub_channels中: 1 2 3 struct redisServer { dict *pubsub_channels } 键是channel的名字,值是订阅这个频道的客户端链表 18.1.1 频道的订阅 18.1.2 频道的退订 18.2 pattern的订阅与退订 redis将所有pattern的订阅存在链表pubsub_patterns中: 1 2 3 4 5 6 7 8 struct redisServer { list *pubsub_patterns; } typedef struct pubsubPattern { redisClient *client; robj *pattern; } pubsubPattern; 18.2.1 订阅pattern 18.2.2 退订pattern 18.3 发送消息 18.3.1 将消息发送给频道订阅者 18.3.2 将消息发送给模式订阅者 18.4 查看订阅信息 18.4.1 PUBSUB CHANNELS 18....

created: 2023-04-04  |  updated: 2023-04-04  |  阿秀