
redis
文章平均质量分 84
幻想波普星
这个作者很懒,什么都没留下…
展开
-
讲讲redis底层数据结构吧
redis有五种对象类型,分别是字符串、列表、哈希、集合、有序集合,redis的键值对是两个对象,键一般是字符串,值就这五种中选了。字符串字符串的编码可以了解下SDS,全称Simple Dynamic String和C语言中的字面量String相比,SDS优势主要以下几点提供了len属性,O(1)获取长度动态扩展,C语言中的String占多少内存是固定的,进行拼接之类操作如果不提...原创 2020-02-17 19:32:02 · 239 阅读 · 0 评论 -
redis设计之sentinel分析
sentinel系统通过监视主服务器及其从服务器的状态保证了redis的高可用首先明确sentinel是配置中心而不是代理中心。当设定的主服务器掉线超过设定的下线时长时,sentinel会挑选一个从服务器作为主服务器,并且监视已经下线的主服务器,当主服务器再次上线时,让他作为新的主服务器的从服务器启动并初始化Sentinel的过程初始化服务器,类似于初始化普通的redis服务器,但是不需...原创 2019-09-06 18:38:41 · 200 阅读 · 0 评论 -
redis底层数据结构分析
SDS Simple Dynamic StringSDS结构定义struct sds{ // SDS所保存字符串长度,即buf数组中已使用字节数量 int len; // buf数组中未使用字节的数量 int free; // 保存字符串的字节数组 char[] buf;}相比C语言优势:得到数组长度时间复杂度由O(n)变为O(1),直...原创 2019-09-06 19:58:34 · 126 阅读 · 0 评论 -
redis设计之集群分析
集群由redis服务器节点组成,通过节点间互相meet握手构成集群节点握手:两次握手过程如下所示:收到meet命令的节点A将会与节点B进行握手,以此来确认彼此的存在节点A将会为节点B创建一个 clusterNode结构,并将该结构添加到自己的clusterState.nodes字典节点B收到节点A的MEET,B为A创建一个clusterNode结构,并将该结构添加到自己的cluster...原创 2019-09-08 20:38:00 · 129 阅读 · 0 评论 -
redis设计之持久化设置
redis的过期键删除策略定时删除:为每个键设置过期时间的同时,设置一个定时器,即一过期就删除,这个方法对内存友好,但是没过期时维持大量的计时器对CPU不好惰性删除:放任不管,用到一个键时,坚持该键是否过期,过期的话删除,否则不删除定期删除: 每隔一段时间,对数据库进行检查,删除过期的键盘。redis配合使用惰性和定期两种策略RDB执行SAVE或者BGSAVE创建一个RDB时,程序会对...原创 2019-09-09 16:16:18 · 140 阅读 · 0 评论 -
redis设计之发布与订阅
频道的订阅与退订客户端执行SUBSCRIBE/UNSUBSCRIBE 来订阅和退订频道REDIS服务器将所有频道的订阅关系保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个频道,值是所有订阅了这个频道的客户端组成的链表订阅频道:遍历所有频道列表,若是没找到该频道,字典中添加channel键,设置值为空链表,最后将客户端加入链表末尾;若是遍历的过程中找到,直接加入末...原创 2019-09-09 16:17:30 · 104 阅读 · 0 评论