1. ziplist编码的哈希对象使用压缩列表作为底层实现

保存了同一个键值对的两个节点总是紧挨在一起的,保存键的节点在前,保存值的节点在后,
先添加到哈希对象中的键值对会被放在压缩列表的表头方向,后添加到哈希对象中的键值对会被放在压缩列表的表尾方向

  1. hashtable编码的哈希对象使用字典作为底层实现,每个键值对都使用一个字典键值对来保存,

字典的每个键都是一个字符串对象,对象中保存了键值对的键
字典的每个值都是一个字符串对象,对象中保存了键值对的值

编码转换

当哈希对象可以【同时满足】以下条件时,哈希对象的编码使用ziplist,否则使用hashtable编码,

  1. 哈希对象保存的所有键值对的键和值的字符串长度都 < 64byte
  2. 哈希对象保存的键值对数量 < 512个,

编码的转换两个条件的上限值可通过配置文件中的hash-max-ziplist-value、hash-max-ziplist-entries选项进行调整,

源码阅读

  1. 文件:src/t_hash.c

相关文章:

  • 2022-12-23
  • 2021-12-06
  • 2021-09-09
  • 2021-12-27
  • 2021-09-26
  • 2021-10-08
猜你喜欢
  • 2021-10-11
  • 2021-05-20
  • 2021-07-18
  • 2022-02-28
  • 2022-01-18
  • 2021-07-26
  • 2021-12-20
相关资源
相似解决方案