2、Hash类型
为了区别与 Redis 的键值对的称呼,Hash 中的键称为 field,而 key 为 Redis 的键
- 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
- 需要的内存结构:一个存储空间保存多少个键值对数据
- Hash 类型:底层使用哈希表结构实现数据存储
Hash 常用操作
// Hash常用操作
// 1、存储一个哈希表key的键值(将哈希表key的字段field的值设为value)
HSET key field value
// 2、存储一个不存在的哈希表key的键值(field不存在时,设置哈希表字段的值)
HSETNX key field value
// 3、在一个哈希表key中存储多个键值对
HMSET key field value [field value ...]
// 4、获取哈希表key对应的field键值
HGET key field
// 5、批量获取哈希表key中多个field键值
HMGET key field [field ...]
// 6、删除哈希表key中的field键值(删除指定的field)
HDEL key field [field ...]
// 删除整个hash
DEL key
// 7、返回哈希表key中field的数量
HLEN key
// 8、返回哈希表key中所有的键值
HGETALL key
// 9、为哈希表key中field键的值加上增量increment
HINCRBY key field increment
// 10、有多少个元素
hlen key
其他操作
// 对象缓存
HMSET user {userId}:name zs {userId}:balance 1888
HMSET user 1:name zs 1:balance 1888
HMGET user 1:name 1:balance
适用场景
场景 1、Hash 实现抢购,限购发放优惠券,激活码等
解决方案:
- 以商家id作为key
- 将参与抢购的商品id作为field
- 将参与抢购的商品数量作为对应的value
- 抢购时使用这样的方式控制产品数量
场景 2、电商购物车
1、以用户 id 作为 key
2、商品 id 为 field
3、商品数量为 value
购物车操作
1、添加商品 -> hset cart:1001 10006 1
2、增加数量 -> hincrby cart:1001 10006 1
3、商品总数 -> hlen cart:1001
4、删除商品 -> hdel cart:1001 10006
5、获取购物车所有商品 -> hgetall cart:1001
优点:
同类数据归类整合存储,方便数据管理
相比 String 操作消耗内存与 CPU 更小
相比 String 存储更节省空间
缺点:
过期功能不能使用 field 上,只能用在 key 上
Redis 集群架构下不适合大规模使用( 因为某个 key 下是所有 hash 都在一个节点上,可能导致数据倾斜,可以采用拆分 key 的方式 )

© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...