前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis学习笔记(四)Redis数据存储类型之hash

Redis学习笔记(四)Redis数据存储类型之hash

作者头像
萌萌哒的瓤瓤
发布2020-08-26 11:10:35
3450
发布2020-08-26 11:10:35
举报

hash

​ 基本操作

​ (1)存入数据 hmset key field1 value1 field2 value2…

​ (2)读取数据 hmget key field1 fisld2…

​ (3)获取哈希表中的字段 hlen key

​ (4)判断是否含有某个字段 hexist key field

​ (2)获取所有的字段名或字段值 hkeys key

​ hvals key

​ (3)设置指定字段的数值数据增加指定范围的值

​ hincrby key field increment

​ hincrbyfloat key field increment

注意事项:

hash类型下的value只能存储字符串,不允许再存储其他的数据结构,不能再嵌套

每个hash也是有存储上限的,为2的32次方-1个键值对

hash虽然与存储类对象类似,但是切不可将hash等于类对象的存储,更不可将hash作为对象列表来使用

hgetall可以查询某个键的全部值,但是如果内部的field过多的话,还是建议一个一个的取出来,因为遍历整体数据效率十分低下

应用场景实例:

1.电商购物车

很容易想到的就是将用户的id作为我们存储数据时的key并将商品的数量以hash的数据形式存储进来,大致是如下的结构hmset user:id001 good1:num 100 good2:num 200…

这样我们就能将购物车的信息存储但是如果我们再仔细检查思考之后就能发现其实仍然不完整,这其中我们只存储了商品的数量,但是商品信息并没有存储进来,所以我们还需要改进可以通过json的数据形式而非数据结构来存储商品的信息大致结构如下

hmset user:id001 good1:num 100 good1:info {name:water,size:600ml} good2:num 200 good2:info {name:shirt,size:XL}…

这样的形式来进行存储,但是这样真的使得查询变得高效了吗,假设每个用户都购买了good1,只是商品数量不一样而已,但是每次都会将商品的信息都查询一次,显然这样也是不行的,所以我们可以选择将商品信息单独列成一个库来进行存储,这样每次查询的时候,如果内存中已经有了相应商品的信息,就不会在重复查询了

2.商家的抢购活动

这里比方说有很多商家分别推出多种商品来供顾客进行抢购。

我们可以考虑将商家作为key,将商品作为其中的field,将商品的数量作为value来进行实现大致结构如下:

hmset shangjia1 good1 100 good2 200…之后我们通过hincrby指令来实现商品的抢购,比如;

hincrby shangjia1 good1 -1这样即实现商品的抢购操作。其实还应该考虑货已经卖完了,不能再卖的情况,但是这种业务逻辑一般在编程的时候实现,不应在数据层进行编写。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • hash
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档