本文主要是介绍购物车列表设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
三、缓存结构设计
- 购物车数量
数据结构 string
redisKey : cart_size${userId}
value:购物车数量
缓存时间 15天
- 数据库用户购物车列表
数据结构 string
redisKey : cart${userId}
value:数据库用户购物车列表json
缓存时间 15天
- 用户排序后购物车商品列表,用于下一页分页时进行分页切割查询分页skuId集合,时效时间1小时,主要防止用户在购物车列表停留时间比较久查询下一页,如果停留时间超过下一页将重置用户排序后购物车商品列表查询
数据结构 string
redisKey : cart_order_sku:地区码:用户ID ,如果地区码没有选择默认NO_AREA
value:购物车缓存排序商品项列表json
缓存时间 1小时
- 用户地址购物车列表关系,用于加购物车时清理用户选择了哪些地区码对应的购物车列表数据
数据结构 Set
redisKey : cart_area_shop:用户ID
field : townCode 地区码
value:当前时间戳
缓存时间 不过期
5、用户购物车店铺结果显示列表
数据结构 string
redisKey : 购物车排序后缓存key cart_order_shop:用户ID:地区码,如果地区码没有选择默认NO_AREA
value:用户购物车店铺结果显示列表json
缓存时间 平时3分钟、活动大促高流量期间10分钟
6、用户购物车商品结果显示列表
数据结构 string
redisKey : 购物车排序后缓存key cart_order_shop:用户ID:地区码,如果地区码没有选择默认NO_AREA
value:用户购物车商品结果显示列表json
缓存时间 平时实时查询、活动大促高流量期间10分钟
1、购物车列表请求时序图
2、责任链+模版方法的组合设计
购物车分页商品列表查询链
购物车店铺列表查询链
基础组件设计说明
1、AbstractProcessChain:抽象请求处理链定义方法链路执行
execute方法,封装入参CartParamBO,执行结果CartResultBO 用于整个调用链路执行
2、AbstractInitProcessChain:抽象异步初始化数据入参请求处理链
定义initParamBO抽象方法 拓展功能支持多线程异步并发请求服务进行CartResultBO查询组装
3、CartShopListQueryChain: 购物车店铺列表处理器链
通过实现InitializingBean接口进行Processor组件调用链路初始化,以及每个组件逻辑处理
5、*Processor具体处理链逻辑组件
1、CartShopProcessor:店铺信息处理逻辑组件 对接店铺信息查询,店铺信息组装
2、CartProductProcessor 商品信息逻辑组件
3、CartShopProcessor 店铺信息、店铺销售区域信息查询组装,销售区域校验处理、店铺状态校验处理
3、接口适配器模式设计,将对接的依赖服务进行接口层适配隔离业务逻辑
这篇关于购物车列表设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!