开发者社区> 怀特> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Redis 数据类型hash以及使用场景

简介: Redis 数据类型hash以及使用场景
+关注继续查看

hash在Java中其实就是键值对的存在,在redis也不列外,使用场景是:
新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
需要的存储结构:一个存储空间保存多个键值对数据
hash类型:底层使用哈希表结构实现数据存储
image.png
hash存储结构优化
如果field数量较少,存储结构优化为类数组结构
如果field数量较多,存储结构使用HashMap结构

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

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

hash数据类型基本操作

添加/修改数据

hset key field value

image.png
获取指定key的数据

hget key field

image.png
获取所有数据

hgetall key

image.png
删除指定key

hdel key field1 [field2]

image.png
添加/修改多个数据 和string一样的操作 在h后面set的前面加一个m

hmset key field1 value1 field2 value2 …

image.png
获取多个数据

hmget key field1 field2 … 

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

hlen key

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

hexists key field

image.png

hash 类型数据扩展操作

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

hkeys key
hvals key

image.png
image.png

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

hincrby key field increment
hincrbyfloat key field increment

image.png

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

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

hash 类型应用场景

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

redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计

业务场景

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis 数据类型set以及使用场景
Redis 数据类型set以及使用场景
48 0
一步一步学习Redis——五大数据类型之哈希(Hash)的相关命令
一步一步学习Redis——五大数据类型之哈希(Hash)的相关命令
32 0
一步一步学习Redis——五大数据类型(String、Hash、List、Set、ZSet)简要介绍
一步一步学习Redis——五大数据类型(String、Hash、List、Set、ZSet)简要介绍
34 0
Redis不同数据类型命令使用及应用场景
Redis不同数据类型命令使用及应用场景
100 0
【Redis】Hash哈希类型基本使用
【Redis】Hash哈希类型基本使用
52 0
redis常用的数据类型及命令
redis常用的数据类型及命令 String类型: (1): append:追加到原有的key的value后 append key value (2):exists:判断key是否存在 exists key (3):set 给某个key存储某个值 set key value (4):get:获取.
1092 0
redis hash底层数据结构
hash底层存储结构 redis的哈希对象的底层存储可以使用ziplist(压缩列表)和hashtable。当hash对象可以同时满足一下两个条件时,哈希对象使用ziplist编码。
3078 0
Redis中5种数据结构的使用场景介绍
云栖社区:https://yq.aliyun.com/articles/64264?spm=5176.100240.searchblog.52.vi6jxU
932 0
Redis中5种数据结构的使用场景介绍
这篇文章主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String、Hash、List、Set、Sorted Set做了讲解,需要的朋友可以参考下 一、redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉
2359 0
+关注
怀特
一个着迷于技术又喜欢不断折腾的技术活跃者,擅长后端系统设计开发,从14年开始接触互联网技术。毕业进入互联网行业,开发过ERP、人脸识别等项目,折腾过人工智能,组织过系统重构。不仅从事业务系统的开发工作,对架构的设计和落地有一定的经验。
70
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载