哈希对象的编码可以是ziplist或者 hashtable。ziplist编码的哈希对象使用压缩列表作为底层实现,每当有新的键值对要加入到哈希对象时,程序会先将保存了键的压缩列表节点推入到压缩列表表尾,然后再将保存了值的压缩列表节点推人到压缩列表表尾,因此
- 保存了同一键值对的两个节点总是紧挨在一起,保存键的节点在前,保存值的节点在后。
- 先添加到哈希对象中的键值对会被放在压缩列表的表头方向,而后来添加到哈希对象中的键值对会被放在压缩列表的表尾方向。
例如:
redis> HSET profile name "Tom"
OK
redis> HSET profile age 25
OK
redis> HSET profile career "Programmer"
OK
如果 profile键的值对象使用的是ziplist编码,那么这个值对象将会是下图所示的样子。