
redis
新人欢
这个作者很懒,什么都没留下…
展开
-
redis设计与实现学习---(四)独立功能的实现
一 发布与订阅 1 简介 Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。 SUBSCRIBE “news.it” PUBLISH “news.it” “hello” PSUBSCRIBE命令订阅一个或多个模式,从 而成为这些模式的订阅者:每当有其他客户端向某个频道发送消息时,消息不仅会被发送给 这个频道的所有订阅者,它还会被发送给所有与这个频道相匹配的模式的订阅者。 2 频道的订阅与退订SUBSCRIBE和UNSUBSCRIBE 订阅与退订对应着链表中怎加或原创 2020-08-17 11:30:21 · 147 阅读 · 1 评论 -
redis设计与实现学习---(三)多机数据库的实现
一 复制 1 旧版本复制的实现 redis slaveof命令分为同步和命令传播。 同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态。 命令传播操作则用于在主服务器的数据库状态被修改,导致主从服务器的数据库状态出 现不一致时,让主从服务器的数据库重新回到一致状态。 2 同步 从服务器对主服务器的同步操作需要通过向主服务器发送SYNC命令来完成,以下是 SYNC命令的执行步骤: 1)从服务器向主服务器发送SYNC命令。 2)收到SYNC命令的主服务器执行BGSAVE命令,在后台生成一个RD原创 2020-08-06 14:16:01 · 139 阅读 · 0 评论 -
redis设计与实现学习---(二)单机数据库的实现
一 数据库 注意:下面所有serverCron的操作的定时都是都是默认100毫秒一次,可以通过hz(默认为10 )配置 1 服务器状态 初始化服务器时,程序会根据服务器状态的dbnum属性来决定应该创建多少个数据库, dbnum可以通过配置文件中的database决定,默认16。 2 客户端状态 每个客户端中间有一个数据库指针,通过select index可以切换指向的数据库 3 数据库 其中数据库键空间中所有的键都是字符串键对象,值是不同数据结构对象。 过期时间中键与键空间共享同一个键对象,值存的是一原创 2020-07-27 14:47:56 · 168 阅读 · 0 评论 -
redis设计与实现学习---(一)基础数据类型
一 基础数据类型 1 简单动态字符串(simple dynamic string,SDS) 与C中字符串的异同点: ① 获取字符串长度,C需要遍历字符数组,而SDS则通过len记录 ② 杜绝缓冲区溢出,C中如果合并两个字符串字符数组之前没有分配足够的空间就会造成数据截断,丢失数据,而SDS则合并之前判断free是否足够,不足够则会扩容在合并 ③ 因为有预留的free空间,所以在修改字符串的时候会减少内存重分配的次数(默认SDS长度小于1M则预分配free=len,如果大于1M则free=1M)。 ④ 惰性的原创 2020-07-22 18:51:07 · 169 阅读 · 0 评论