Redisbook学习笔记(3)数据类型之哈希表

REDIS_HASH (哈希表) 是HSET 、HLEN 等命令的操作对象, 它使用

REDIS_ENCODING_ZIPLIST 和REDIS_ENCODING_HT 两种编码方式:

wKioL1MGC2GBgniVAACYyMCRA1g493.jpg

字典编码的哈希表

当哈希表使用字典编码时,程序将哈希表的键(key)保存为字典的键,将哈希表的值(value)

保存为字典的值。

哈希表所使用的字典的键和值都是字符串对象。

下图展示了一个包含三个键值对的哈希表:

wKiom1MGC8fyKGUBAADrSrRz8iY543.jpg


压缩列表编码的哈希表

当使用REDIS_ENCODING_ZIPLIST 编码哈希表时,程序通过将键和值一同推入压缩列表,从而

形成保存哈希表所需的键-值对结构:

wKiom1MGC-7DfYf3AABuWCU0tl0101.jpg

新添加的key-value 对会被添加到压缩列表的表尾。

当进行查找/删除或更新操作时,程序先定位到键的位置,然后再通过对键的位置来定位值的

位置。

编码的选择

创建空白哈希表时,程序默认使用REDIS_ENCODING_ZIPLIST 编码,当以下任何一个条件被满

足时,程序将编码从切换为REDIS_ENCODING_HT :

哈希表中某个键或某个值的长度大于server.hash_max_ziplist_value (默认值为64

)。

压缩列表中的节点数量大于server.hash_max_ziplist_entries (默认值为512 )。

哈希命令的实现

哈希类型命令的实现全都是对字典和压缩列表操作函数的包装,以及几个在两种编码之间进行

转换的函数






















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1361461,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值