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


相关文章
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
332 5
|
2月前
|
存储 消息中间件 缓存
Redis 简介:打造快速数据存储的利器
Redis 是一款开源的内存数据结构服务器,支持字符串、哈希、列表等多种数据结构,具备高性能、持久化、高可用及分布式特性,适用于缓存、会话管理、实时统计等场景。
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
1738 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
存储 NoSQL PHP
PHP与Redis结合使用,提升数据存储性能
随着互联网应用的发展,PHP与Redis的结合成为提升数据存储性能的重要手段。PHP作为流行的服务器端语言,常用于网站开发;Redis作为高性能内存数据库,以其快速读写能力,有效优化数据访问速度,减轻数据库压力。两者结合通过缓存机制显著提升应用响应速度,支持高并发场景下的稳定性和可扩展性。
|
存储 NoSQL Redis
Redis 哈希(Hash)
10月更文挑战第16天
186 1
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
193 2
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
1380 3
|
存储 NoSQL Redis
redis-set类型
【10月更文挑战第6天】
178 1
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
309 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
下一篇
oss云网关配置