Redis 入门学习 (四) —— hash散列类型

一、hash 类型

1.新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息

2.需要的存储结构:一个存储空间保存多个键值对数据

3.hash类型:底层使用哈希表结构实现数据存储

注:hash存储结构优化 : a.如果field数量较少,存储结构优化为类数组结构

b.如果field数量较多,存储结构使用HashMap结构

hash的存储空间在field和value包含的区域

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

1.添加/修改数据:

hset key field value

2.获取数据

a. hget key field

b. hgetall key

3.删除数据

hdel key field1 [field2]

4.添加/修改多个数据

hmset key field1 value1 field2 value2 …

5.获取多个数据

hmget key field1 field2 …

6.获取哈希表中字段的数量

hlen key

7.获取哈希表中是否存在指定的字段

hexists key field

三、hash 类型数据扩展操作

1.获取哈希表中所有的字段名或字段值

hkeys key

hvals key

2.设置指定字段的数值数据增加指定范围的值

a. hincrby key field increment

b. hincrbyfloat key field increment

四、hash 类型数据操作的注意事项

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

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

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

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

五、hash类型数据应用

模拟电商购物车数据实现:

将用户的id作为key,商品的id作为field,商品的数量为value(简易实现,不考虑过多外在因素)

商品数量设值:hset

增加:hincrby

取值:hget

全选:hgetall

总量:hlen

删除:hdel

实现用户001和用户002的购物车(a,b,c为商品)存储:

加速操作:

 

hsetnx key field value 如果filed存在则不操作,反之进行添加操作 

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

1.如果对于数据缓存的读取更多,更新操作不频繁的情况下(或者每次更新都更新json数据中的大多数key),选择string类型存储。

2.如果对于数据缓存的更新更多,只想更新json数据中的少数的键值信息,则选择hash类型存储。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知笑长长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值