Redis学习笔记 ——(3)哈希结构的用法、内部编码、使用场景

本文介绍了Redis中的哈希结构,包括哈希的用法如HSET、HGETALL等操作,内部编码ziplist和hashtable的原理,以及哈希在购物车信息存储等场景的应用。

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

Redis学习笔记 ——(3)哈希结构的用法、内部编码、使用场景

几乎所有的编程语言都提供了哈希(hash)类型,他们的叫法可能是哈希、字典、关联数组等。
在Redis中,哈希类型是指键值本身又是一个键值对结构,例如value = { { filed,value},…{filedn,valuen}}.
在这里插入图片描述

1. 哈希的用法

  • HDEL key field1 [field2]
    删除一个或多个哈希表字段
  • HEXISTS key field
    查看哈希表 key 中,指定的字段是否存在。
  • HGET key field
    获取存储在哈希表中指定字段的值。
  • HGETALL key
    获取在哈希表中指定 key 的所有字段和值
  • HINCRBY key field increment
    为哈希表 key 中的指定字段的整数值加上增量 increment 。
  • HINCRBYFLOAT key field increment
    为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
  • HKEYS key
    获取所有哈希表中的字段
  • HLEN key
    获取哈希表中字段的数量
  • HMGET key field1 [field2]
    获取所有给定字段的值
  • HMSET key field1 value1 [field2 value2 ]
    同时将多个 field-value (域-值)对设置到哈希表 key 中。
  • HSET key field value
    将哈希表 key 中的字段 field 的值设为 value 。
  • HSETNX key field value
    只有在字段 field 不存在时,设置哈希表字段的值。
  • HVALS key
    获取哈希表中所有值。
  • HSCAN key cursor [MATCH pattern] [COUNT count]
    迭代哈希表中的键值对。
2.内部编码

hash类型的内部编码有两种:

  • ziplist(压缩列表)
    当哈希类型的元素个数小于hash-max-ziplist-entries配置(默认512个),同时所有值都小于hash-maxziplist-value配置(默认为64字节),Redis会使用ziplist做为哈希的内部实现。Ziplist可以使用更加紧凑的结构来实现多个元素的连续存储,所以在节省内存方面更加优秀。

  • hashtable(哈希表)
    当哈希类型无法满足ziplist要求时,redis会采用hashtable做为哈希的内部实现,因为此时ziplist的读写效率会下降

3. 应用场景
  • 以客户id作为key,每位客户创建一个hash存储结构存储对应的购物车信息
  • 将商品编号作为field,购买数量作为value进行存储
  • 添加商品:追加全新的field与value
  • 浏览:遍历hash
  • 更改数量:自增/自减,设置value值
  • 删除商品:删除field
  • 清空:删除key
  • 此处仅讨论购物车中的模型设计
  • 购物车与数据库间持久化同步、购物车与订单间关系、未登录用户购物车信息存储不进行讨论
  • 以商家id作为key
  • 将参与抢购的商品id作为field
  • 将参与抢购的商品数量作为对应的value
  • 抢购时使用降值的方式控制产品数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值