redis自学(12)Hash

Hash

Hash结构与Redis中的Zset非常类似:

l 都是键值存储

l 都需要根据键获取值

l 键必须唯一

区别如下:

zset的键是member,值是score;hash的键和值都是任意值

zset要根据score排序,hash则无需排序

因此,Hash底层采用的编码与Zset也基本一致,只需要把排序有关的SkipList去掉即可:

Hash结构默认采用ZipList编码,用以节省内存。ZipList中相邻的两个entry分别保存fieldvalue

 

 

当数据量较大时,Hash结构会转为HT编码,也就是Dict,触发条件有两个:

① ZipList中的元素数量超过了hash-max-ziplist-entries(默认512

② ZipList中的任意entry大小超过了hash-max-ziplist-value(默认64字节)

 

 

 

加值

 

 

 

 

判断是否存在,不存在新建,新建默认是ZipList编码

 

 

 

 

根据元素大小判断是否需要转换为Dict,不判断数量是因为键的唯一性,不确定数量是否会超过限定值

 

 

添加的同时判断数量是否超过限定值转换为Dict

 

 

posted @ 2024-03-06 17:53  蓝海的bug本  阅读(3)  评论(0编辑  收藏  举报