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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis学习笔记(四)Redis数据存储类型之hash

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


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
16天前
|
XML JSON NoSQL
Redis的常用数据结构之字符串类型
Redis的常用数据结构之字符串类型
19 0
|
1月前
|
存储 缓存 NoSQL
Redis数据存储:高效、灵活、实时
Redis数据存储:高效、灵活、实时
|
3月前
|
存储 NoSQL Redis
redis中Hash命令的基础操作
redis中Hash命令的基础操作
40 1
|
3月前
|
存储 NoSQL Redis
redis源码学习
redis源码学习
|
3月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
82 2
|
3月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
74 0
|
1天前
|
存储 NoSQL 算法
Redis入门到通关之Redis数据结构-Hash篇
Redis入门到通关之Redis数据结构-Hash篇
10 1
|
1天前
|
存储 缓存 NoSQL
Redis入门到通关之Hash命令
Redis入门到通关之Hash命令
|
1月前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
54 0
|
2月前
|
存储 NoSQL 算法
学习 Redis 基础数据结构,不讲虚的。
职场中是这样使用 redis 的。
154 1
学习 Redis 基础数据结构,不讲虚的。

热门文章

最新文章