相比于C字符串,SDS的优势: O(1)获取字符串的长度 不会缓冲区溢出 减少修改字符串时所需的内存重新分配的次数(空间预分配、惰性空间释放) 二进制API安全(通过len获取长度) 兼容部分C字符串函数 Redis hash策略 1. Redis中的字典使用哈希表作为底层,每个字典带有两个哈希表,一个平时使用,另一个仅在rehash的时候使用 2. 字典作为数据库或者哈希键的底层实现时,Redis使用MurmurHash2算法来计算键的哈希值 3. 哈希表使用链地址法来解决哈希冲突,被分配到同一个键值上的多个索引会链接形成一个单向链表 4. 在对哈希表进行扩展或者收缩时,rehash过程不是一次完成,而是渐进式完成 embstr和raw embtr