Redis从入门到入坟系列文章(三): 哈希(Hash)

本文介绍了Redis中的哈希数据结构,包括它的内部编码ziplist和hashtable,以及不同编码的使用条件。文章详细阐述了哈希表的操作命令,如HSET、HGET、HMSET、HDEL等,并提到了Redis 4.0.0后HMSET的弃用。此外,还介绍了HSETNX、HINCRBY和HSCAN等高级命令,帮助读者全面理解Redis哈希的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 最多可以存储 2^32 - 1 键值对(40多亿)。

我们先了解下hash的内部编码实现,其分为两种:压缩列表ziplist和哈希表hashtable。数据量存储较小的情况下使用ziplist,其满足一下设置的两个条件,就会使用ziplist:

1)、hash-max-ziplist-entries,默认值为512,哈希元素少于该配置,
2)、hash-max-ziplist-value,默认值为64,哈希值小于该配置

我们打开安装目录下的文件redis.windows-service.conf或redis.windows.conf,可以看到其配置:

# Hashes are encoded using a memory efficient data structure when they have a
# small number of entries, and the biggest entry does not exceed a given
# threshold. These thresholds can be configured using the following directives.
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

看名字就知道ziplist使用了更加紧凑的结构实现多个元素的连续存储,所以ziplist比hashtable更节省内存;但是由于hashtable的读写时间复杂度为O(1),所以其读写效率要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值