Redis使用Hash类型的应用场景,提高效率的方法

Hash在购物车上的应用

# hmset user_id goods1_id nums1 goods2_id nums2
hmset 01 goods_01 1 goods_02 2  # 用户01将一个商品1、两个商品2加入购物车(以Redis形式存储)

出现的问题与解决[递进式的,​(2)√(3)×:如(3)的方法可解决(2)的问题,但(3)会产生新问题]:

​(1)×: 对于商品,由于只将其ID加入Redis,因此用户对于购物车中的商品只看到ID,看不到商品的具体信息

​(1)√(2)×: 因此,需要依据商品的ID在对应店铺中再查询一次;但会导致购物车的加载速度降低

​(2)√(3)×: 所以,在用户添加商品时,要同时把商品信息也存入Redis中;但由于商品数量、商品信息在Key(用户ID)下的同个Field中,若用户在购物车为该商品增加数量,依据hincrby key field increment,显然商品信息无法且没必要进行增加,会导致增加数量失败

(3)√(4)×: 对此,需将商品数量、商品信息在商品ID下,分为两个Field,为了区分,商品数量命名为goods_id:nums,商品信息则为goods_id:info,且value 以JSON格式存储;但若有多个用户添加了同一件商品到购物车,那明显每个Key(用户ID)下的goods_id:info都是相同的,冗余导致性能降低

(4)√(5)×: 据此,要将goods_id:info单独存储在另一个Hash中,通过hsetnx user goods_id:info xxxx存储,此处的user(key)不为user_id,以确保key相 同才能依据Field实现goods_info不重复存储
Redis使用Hash类型的应用场景,提高效率的方法

上一篇:20210726# MySQL数据库条件查询


下一篇:java比较器