hash类型

本文介绍了Redis的Hash数据结构,其类似HashMap且优化了内部实现,常用于对象存储。重点讲解了常用命令如HMSET、HMGET等,以及在对象缓存、电商购物车场景的应用。讨论了其优点(高效、节省空间)和缺点(过期限制、集群压力分布不均)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

在这里插入图片描述
hash 类似于 JDK1.8 前的 HashMap,内部实现也差不多(数组 + 链表)。不过,Redis 的hash 做了更多优化。另外,hash 是一个 string 类型的 field 和 value 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 hash数据结构来存储用户信息,商品信息等等。

其实它的结构可以看成 (K,(K,V)),只不过val中的K被称为filed

常用命令

hset,hmset,hexists,hget,hgetall,hkeys,hvals 等

应用场景

系统中对象数据的存储。

1、对象缓存

# 模板
HMSET user {userId}:username zhangfei {userId}:password 123456
# 实列
HMSET user 1:username zhangfei 1:password 123456
HMGET user 1:username 1:password

在这里插入图片描述

2、电商购物车
在这里插入图片描述
1)添加商品 —> hset cart:1001 10088 1
2) 增加数量 —> hincrby cart:1001 10088 1
3) 商品总数 —> hlen cart:1001
4) 删除商品—> hdel cart:1001 10088
5)获取购物车所有商品—> hgetall cart:1001

优缺点

优点:
1)同类数据归类整合储存,方便数据管理
2)相比String操作消耗内存和cpu更小
3)相比String储存 更节省空间

缺点:
1)过期功能不能使用在field上,只能用在key上
2)Redis集群架构下不适合大规模使用。
因为如果一个hash的key中的属性很多的话,只能存在一个redis节点上,那么这个节点压力会比其他节点压力大很多,造成redis集群下压力分配不均衡!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值