264-Redis(Redis 数据类型:hash)

Redis的Hash类型用于存储键值对,适用于购物车、用户信息等场景。Hash通过哈希表实现,支持高效添加、修改和删除操作。当field数量少时,存储结构优化为类数组,多时用HashMap。注意Hash不适合存储大量数据,避免滥用。使用HSET、HGET、HDEL等命令进行操作,HINCRBY和HKEYS、HVALS用于增减和获取所有字段或值。Hash是对象存储的良好选择,对比JSON存储,修改更便捷。

hash

1、string 存在的问题

在这里插入图片描述
我们使用hash来存储:
在这里插入图片描述

2、hash类型

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

hash存储结构优化

  • 如果field数量较少,存储结构优化为类数组结构
  • 如果field数量较多,存储结构使用HashMap结构

3、hash 类型数据的基本操作

# 添加/修改数据
hset key field value

# 获取数据
hget key field
# 获取一个key的所有值
hgetall key

# 删除数据
hdel key field1 [field2]

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

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

# 添加/修改多个数据
hmset key field1 value1 field2 value2 …

# 获取多个数据
hmget key field1 field2 …

# 获取哈希表中字段的数量(看的是filed的数量)
hlen key

# 获取哈希表中是否存在指定的字段
hexists key field

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

4、hash 类型数据扩展操作

# 获取哈希表中所有的字段名(fileds)或字段值
hkeys key
hvals key  
#值可能重复

# 设置指定字段的数值数据增加指定范围的值  正数负数都行
hincrby key field increment
hincrbyfloat key field increment

# 存在字段就失败,不存在就添加
hsetnx key field value

在这里插入图片描述
注意: key中只有一个filed和value时,返回的也是一个列表;(前面的1)就表示的是列表)
在这里插入图片描述
在这里插入图片描述

5、hash使用注意事项

  1. hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到, 对应的值为(nil)
  2. 每个 hash 可以存储 2 32 - 1 个键值对
  3. hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存 储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用
  4. hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问 瓶颈

6、hash类型应用场景1:购物车

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

7、hash类型应用场景2:卖手机卡

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

8、string存储对象(json)与hash存储对象

  • string存储对象(json): 整体性,读为主(json的性质有关)
  • hash存储对象: 修改方便
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThinkingF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值