chapter18 发布与订阅 客户端订阅频道. 客户端向频道发送消息, 消息被传递至各个订阅者. 匹配模式 客户端订阅模式. 客户端向频道发送消息, 消息被传递给正在订阅匹配模式的订阅者. 另一个模式被匹配的例子. 18.1 频道的订阅与退订 struct redisServer{ /* Pubsub */ // 字典,键为频道,值为链表 // 链表中保存了所有订阅某个频道的客户端 // 新客户端总是被添加到链表的表尾 dict *pubsub_channels; /* Map channel…
客户端可以通过执行 subscribe 命令订阅一个或多个频道,每当有其他客户端向被订阅的频道发送消息时,频道所有的订阅者都会收到这条消息. 客户端还可以通过执行 psubscribe 命令订阅一个或多个模式,消息也会被发送给与频道相匹配模式的订阅者. 频道的订阅与退订 当一个客户端执行 subscribe 命令定于某个频道的时候,就与被订阅频道之间建立起了一种订阅关系.所有频道的订阅关系都保存在服务器状态的 pubsub_channels 字典中,字典的键是被订阅的频道,值是记录了所有订阅这个…
题记:这本书是2015年11月份开始读的,大约花了一个多月的时间通读了一遍,最近由于需要对redis做一些深入的了解,因此又花了两个多月仔细精读了一遍,由于本书设计的内容较多,且每部分的内容都比较细致,因此在整理读书笔记的时候花了很多时间,但确实也收获了很多,本书是针对redis底层的数据结构部分做的整理. -----Dimmacro 2016年11月7日18:21:54. 我们知道redis可以存储字符串.列表.哈希对象.集合.有序集合等五种对象类型,但是在redis内部,根据不同对象类型的数…
目录 前言 1. 简单动态字符串 1.1 SDS的定义 1.2 空间预分配与惰性空间释放 1.3 SDS的API 2. 链表 2.1 链表与节点的定义 2.2 链表的API 3. 字典 3.1 哈希表与哈希节点 3.2 字典 3.3 哈希算法 3.4 解决键冲突 3.5 rehash 3.6 渐进式rehash 3.7 字典的API 最后 前言 参考资料:<Redis设计与实现 第二版>: 本篇笔记按照书里的脉络,将知识点分为四个部分.其中第一部分数据结构与对象分为上中下篇,上篇包括:SDS.…
<Redis设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅读优秀的源码作品能快速的提升编码内功,而像Redis这样代码量不大(2万多行)却句句精致的作品,当然不能错过: 有兴趣的朋友当好好享用: 源码:https://github.com/huangz1990/annotated_redis_source 以下是这本书重点环节的读书笔记: Redis的内部字符串实现…
Redis学习资料与过程记录 在实习中经常会用到很多Redis,对Redis有了一些模糊的了解,总觉得隔靴搔痒的不痛快,所以决定开始深入的了解Redis,也作为我实习期间的目标. 这篇只是为了占个位置,方便后面的笔记与章节对齐.:) 目前有的资料: 源码: https://github.com/antirez/redis <Redis设计与实现>第二版 黄建宏著…
独立功能的实现 十八.发布和订阅 发布和订阅由下面几条命令组成 PUBLISH,发布消息,例如PUBLISH SUBSCRIBE,订阅某个频道 SUBSCRIBE UNSUBSCRIBE 退订某个频道 PSUBSCRIBE,订阅某个模式频道,例如news.* PSUBSCRIBE PUNSUBSCRIBE,退订某个模式频道 数据结构 redisServer dict *pubsub_channels key是频道名,value是一个链表,保存所有订阅这个频道的客户端 list *pubsub_p…
redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符串长度简单; 杜绝缓冲区溢出; 减少修改字符串长度时所需的内存重分配次数; 二进制安全;兼容部分C字符串函数; 1.2.链表:使用listNode与list来实现 listNode其属性有 struct listNode *prev:前一个节点,struct listNode *next:后一个节点…
目录 前言 1. 发布订阅 1.1 频道的订阅与退订 1.2 模式的订阅与退订 1.3 发送消息 1.4 查看订阅消息 2. 事务 2.1 事务的实现 2.2 WATCH 命令的实现 2.3 事务的 ACID 性质 最后 前言 参考资料:<Redis设计与实现 第二版>: 第三部分为独立功能的实现,主要由以下模块组成:发布订阅.事务.Lua 脚本.排序.二进制位数组.慢查询日志.监视器: 本篇将介绍 Redis 的发布订阅与事务.Redis 提供了频道与模式的订阅与退订,支持对频道发送消息.R…
发布与订阅 1. 服务器状态在pubsub_channels字典保存了所有频道的订阅关系:SUBSCRIBE命令负责将客户端和被订阅的频道关联到这个字典里面,而UNSUBSCRIBE命令则负责 解除客户端和被退订频道之间的关联. 2. 服务器状态在pubsub_patterns链表保存了所有模式的订阅关系:PSUBSCRIBLE命令负责将客户端和被订阅的模式记录到这个链表中,而PUNSBUSCRIBLE命令则负 责移除客户端和被退订模式在链表中的记录. 3. PUBLISH命令通过访问pubsu…