Redis源码剖析——哈希对象

哈希对象

哈希对象的编码可以为ziplist或者hashtable

ziplist编码的哈希对象

满足下面两个条件时,哈希对象使用ziplist编码
1. 所有键值对的键和值的字符串长度都小于等于64字节
2. 键值对数量小于512

连续执行下面三个命令后
HSET profile name “Jack”
HSET profile age 20
HSET profile career “Prograammer”
键pfofile 的值对象的内存布局如图,将采用ziplist编码
这里写图片描述
保存了同一键值对的两个节点总是紧挨在一起的

hashtable编码的哈希对象

当不满足ziplist编码的两个条件时,哈希对象将使用hashtable编码
如字符串长度超过64字节时
执行命令 HSET test string “kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk”后(65个k)
键test的值对象将使用hashtable编码,内存布局如下图
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值