![1ce4525c60f1e1448ac5ebfcfa87daa6.png](https://i-blog.csdnimg.cn/blog_migrate/e32d1df8a4bbef209ed2ad5bbd03879d.jpeg)
简单动态字符串sds
- 安全兼容部分C 字符串函数
- 长整型或浮点数通过字符串保存
链表linkedlist
- 由listNode组成的双端双向链表。通过dup(),free(),match()函数实现多态
字典dict/hashtable
- 双哈希表,哈希算法采用MurmurHash,链式存储解决冲突
![866e08c57e73266ffee97c7aab817215.png](https://i-blog.csdnimg.cn/blog_migrate/a5571d3bbed90ae009f10cbdfafb154f.jpeg)
- rehash通过将ht[0]中的所有键值对rehash到分配更多/更少空间的ht[1]后切换
- 在执行 BGSAVE 或BGREWRITEAOF 的创建子进程中,提高负载因子以避免子进程存在期间进行rehash
- 渐进式rehash,避免了集中式 rehash 而带来的庞大计算量,均摊每次对字典执行添加、删除、查找或者更新操作时,将 ht[0] 哈希表在 rehashidx 索引上的所有键值对 rehash 到 ht[1],然后自增rehashidx,相当于每次转移一行。渐进式rehash期间,RUD操作在两表上都进行,加入C操作