哈希对象
哈希对象的编码可以为ziplist或者hashtable
ziplist编码的哈希对象
满足下面两个条件时,哈希对象使用ziplist编码
1. 所有键值对的键和值的字符串长度都小于等于64字节
2. 键值对数量小于512
连续执行下面三个命令后
HSET profile name “Jack”
HSET profile age 20
HSET profile career “Prograammer”
键pfofile 的值对象的内存布局如图,将采用ziplist编码
保存了同一键值对的两个节点总是紧挨在一起的
hashtable编码的哈希对象
当不满足ziplist编码的两个条件时,哈希对象将使用hashtable编码
如字符串长度超过64字节时
执行命令 HSET test string “kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk”后(65个k)
键test的值对象将使用hashtable编码,内存布局如下图

本文探讨了Redis中哈希对象的两种编码方式:ziplist和hashtable。当键值对满足特定条件时使用ziplist编码,否则使用hashtable。通过实例展示了不同情况下哈希对象的内存布局。
2820

被折叠的 条评论
为什么被折叠?



