redis支持的hash类型:
- 新的存储需求,对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
- 需要的存储结构,一个存储空间保存多个键值对数据
hash类型数据的基本操作
添加数据
hset key field value
获取数据
hget key field
hgetall
删除数据
hdel key field
添加多个
hmset key f1 v1 f2 v2
获取多个
hmget key f1 f2
获取字段数量
hlen key
hash类型数据的扩展操作
- 获取哈希表中所有的字段名或字段值
hkeys key
hvals key
- 增减
hincrby key field increment
博客数量加1
hash类型数据操作的注意事项
- hash类型下的value只能是字符串,不存在hash嵌套hash的现象。
- 每个hash可以存储232 -1个键值对
- hgetall可获取全部属性,数据过多效率会很低。
hash类型应用场景
实现一个购物车
key
,用户id作为key,每一个用户创建一个hash存储结构来存储购物车信息field
,商品id作为fieldvalue
,购买的数量作为value添加购物车
,追加全新的field和value删除商品
,删除field清空
, 删除key
id为001的user购买了g1,数量为3个,购买了g2,数量为5个:
把购物车里的g1商品的数量设为1,并且删除g2商品。
这里我们的购物车里只有购买数量,没有商品的详细信息,还需要去商品数据库查询加载,redis在这里没有起到缓存的作用。怎么解决?我们可以把商品的信息专门建一个hsah来存储,存储商品就和购物车没有关系了。
实现一个抢购活动
key
,商家id作为keyfield
,参与抢购的商品id作为fieldvalue
,商品的数量作为value- 使用
hincrby
控制数量
id为001的店铺,g1和g2商品参与抢购,数量分别是10和20:
此店铺的g1商品被抢走了1个: