Redis为什么那么快
- 高速的存储介质
- 优良的数据存储结构
- 高效的网络io模型
- 高效的线程模型
redis数据库设计
hashtable
渐进式rehash机制
字典扩容需要同时满足如下两个条件:
1、哈希表中保存的key数量超过了哈希表的大小(可以看出size既是哈希表大小,同时也是扩容阈值)
2、当前没有子进程在执行aof文件重写或者生成RDB文件;或者保存的节点数与哈希表大小的比例超过了安全阈值(默认值为5)
扩容每次扩容一倍
扩容之后,老的hashtable中的值需要转移到新的hashtable,重新散列,也叫rehash,转移完之后释放之前的hashtable。
redis string 下 int 编码底层原理
存储整形值的时候,会判断是否可以转为整形值
如果可以转为整形的话,就让这个地址指针强行指向这个值
redis string 下 embstr 编码底层原理
上面的总共占20byte,剩余44byte为embstr的长度
list 数据类型核心操作
list 数据类型底层设计
使用了双向链表优化
set类型底层实现
hash数据类型
zset数据类型
redis跳表编码实现