Hash数据结构

2 分钟阅读 227 字 + 265 词
散列表实现原理
散列表是一种field-value pairs集合类型,Redis的散列表底层数据结构就是dict,由数组和链表构成。
散列表的底层数据结构实际上有两种。
  1. dict数据结构
  2. listpack数据结构
通常情况下,使用dict存储,每个field-value pairs构成一个dictEntry节点。
只有同时满足以下两个条件,才会使用listpack来代替dict
每个field-value pairs中的field和value的字符串的字节数都小于或等于hash-max-listpack-value配置的值(默认64)
field-value pairs的数量小于hash-max-listpack-entries配置的值(默认512)
dic同时使用ht_table[0]和ht_table[1]两个散列表,采用渐进式rehash
image-20250322090908847
使用场景:
购物车场景
购物车hash:key为 shoppingCart:用户ID
dictEntry存储 filed: 商品的名字或者编号 value:数量
还可以用一个hash来存储商品明细信息
商品信息表hash:key为 goods:info
dictEntry存储 filed: 商品的名字或者编号 value:信息的json