redis之hash类型数据

一、简介

  • 新的存储需求,对一系列存储的数据进行编组 ,方便应用存储对象的信息
  • 需要的存储结构,一个存储空间保存多个键值对数据
  • hash类型:底层使用hash表结构实现数据存储 在这里插入图片描述

二、基本操作

  • 单个数据操作
  1. 添加、修改数据
hset key field value
  1. 获取数据
hget key field
hgetall key
  1. 删除数据
hdel key field ....

在这里插入图片描述

  • 多个数据操作
  1. 添加、修改多个数据
hmget key field1 value1 field2 value2 .....
  1. 获取多个数据
hmget key field1 fiedl1
  1. 获取哈希表中字段的位置
hlen key
  1. 获取哈希表中是否存在指定的字段
hexists key field 

在这里插入图片描述

三、扩展操作

  • 获取哈希表中所有字段名或字段值
hkeys key 
hvals key

在这里插入图片描述

  • 设置指定字段的数值数据增加指定范围的值
hincrby key field increment
hincrbyfloat key field increment

在这里插入图片描述
在这里插入图片描述

四、注意事项:

  • hash类型下的value值只能存储字符串,不允许存储其他类型的数据,不存在嵌套的现象,如果数据未获取到对应的值为nil

  • 每个hash可以存储 2^32-1个键值对

  • hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性,但hash设计初衷不是为了存储大量对象而设计的,不可乱用,更不可将hash作为对象列表使用

  • hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率就会很低,有可能成为数据访问瓶颈

五、应用场景

  • 业务场景 :电商网站的购物车实现

在这里插入图片描述

  • 业务分析:
    • 存储模型:增加,更改,修改,清空
    • 购物车的临时变动: 商家数据的修改更新,用户提交数据
    • 未登录用户的存储机制

方案一:

案例解决方案:

  • 用户id作为key值,为每个客户创建信息,进行哈希存储
  • 购买数量value值
  • 添加商品,追加新的field和value值
  • 浏览操作:hgetall
  • 更改操作:hset ,更改对应的value 值
  • 删除操作:hdel 对应的key值对应的field 值
  • 清空操作:直接根据key值进行删除

在这里插入图片描述
弊端:仅仅将数据存储到redis缓存中去,并没有起到加速的功能

方案二:使用json的存储方式

  • 将每条购物车商品记录均保持成两条field
  • field1 : 保持购买数量
    • 商品id:数量(nums)
  • field2:保持购物车显示的信息(文件描述等相关的信息)
    • 商品id:描述信息(msg)

判断json数据的重复性

hsetnx key field value

在这里插入图片描述
在这里插入图片描述

  • 业务场景:订单功能实现(Redis应用于抢购,限购列限量发放优惠劵,激活码等业务的数据存储设计)
    • 以商家id作为key
    • 将参与抢购的商品id作为field
    • 将参与抢购的商品数量作为对应的value
    • 抢购时使用降值的方式控制产品数量

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44763595/article/details/110733096
今日推荐