于是有了这一步的改进。
- 一个key开始对很多数据了,如上图所示。
hash类型介绍
首先可以理解成一个redis里面有一个小的redis。同时要注意引入了一个field的名字。
- hash存储结构优化:
- field数量少,存储结构优化为类数组结构
- field数量多,存储结构使用HashMap结构
基本操作
有点map套map的味道。
哈希的拓展操作
hash类型操作的注意事项
电商网站购物车实现
- 那么值能拿到和进行操作吗?
业务分析
- 先不需要考虑其他太多东西,应该是可以的。
解决方案如下
如下图所示,进行一个购物车的模拟!
001的用户 有两个商品g01 g02,然后可以进行添加和删除及查看全部。
购物车进行反思和提升
如图所示,进行如下的更进。
- 进行更深一步的反思,如果两个用户都购买了g01商品,那么就会有重复的大量信息。
也就是说 g01:info是都有的,那么可以提取出这些东西,然后专门做一个用来保存商品的信息的哈希。
即这些信息作为一个独立之外的hash就可以解决上述问题了,提升访问速度和效率。
张三买一次把商品信息加载到公共的库中,李四也买了李四也加一次信息,也会容易浪费。 那么进行一个判定。 上面的指令是:有就不动,没有就动。
应用场景-抢购商品
解决方案自然就如下了:
超卖问题是由于单线程等等原子操作,现在不作考虑的。
原则上redis只做数据的存储,业务的操作尽量不要给redis,应该归到业务逻辑层来做,不然业务会太分散,违背原则。
所以综上所述,可以用作抢购商品的用途。
string存储讲究整体性,以读为主。 而hash是以更新为主,方便更新和更改数量。