1、购物车因为是高频刷新局部,同时对数据关系构造的要求并非很简单,因而选取 nosql 作为存储工具;
2、前后端须要对接 4 个参数,别离是用户 id,商品编码即 sku_id,多少件商品 count 以及是否勾选 selected;
3、Redis 有 5 种数据类型,别离为 string、list、hash、set、zset。而本次的 4 个参数,数量超过了单一种数据结构的管制范畴,因而选用 2 个数据结构进行独特保护;
4、用户 id,skuid 以及 count 采纳 hash 构造,即:
cart_user_id:{sku_id1:count,sku_id2:count,sku_id3:count….}
5、用户 id 和选中的商品应用 set 保护,因为购物车不要求先后顺序,且 set 构造可主动去重,
select_user_id:[sku_id1,sku_id3…..]
6、前期保护购物车数据时,2 个表同时进行,例如删掉 hash 外面 sku_id1 的时候,selected 外面的也要同时删掉。
7、在 hash 中每次增加商品时,先遍历购物车中的商品是否已有,如果已有,则累加 count,如果没有再加新的。应用 hincrby 函数