redis用自己创建的结构SDS来存储字符串
struct sdshdr{ int len; // 已分配但未被使用的字节 int free; // 内容长度 char buf[]; // 内容存储 }
redis是用c语言写的,相比c语言的字符串结构有什么好处呢?
用了2种算法
每个压缩的元素由3各部分组成,
改变元素大大小会导致内存的重新分配 假如第一个元素的内容长度又253增加到255时,导致第二个元素由之前1个字节存储的长度变成了5个字节极端情况(恰好第二个元素的长度也由253增加到257,然后导致第三个元素重新分配内存…..一直传递下去)
这也叫连锁更新
发布订阅,订阅是阻塞的(类似开启了一个socket一直监听)
lua脚本(服务端代理模式)