哈希对象的编码可以是 ziplist 或 hashtable
ziplist 编码的哈希对象使用压缩列表作为底层实现,每当由新的键值对要加入到哈希对象时,程序会先将保存了键的压缩列表节点推入到压缩列表表尾,然后再将保存了值的压缩列表节点推入到压缩列表表尾

hashtable 编码的哈希对象使用字典作为底层实现,哈希对象中的每个键值对都用一个字典键值对来保存。字典的每个键和值都是一个字符串对象

编码转换
当哈希对象可以同时满足以下两个条件时,哈希对象使用 ziplist 编码:
- 哈希对象保存的所有键和值字符串长度都小于 64 字节
- 哈希对象保存的键值对数量小于 512 个
不能满足这两个条件的哈希对象需要使用 hashtable 编码
这两个条件的上限值由 hash-max-ziplist-value 和 hash-max-ziplist-entries 控制
网友评论