基于redis购物车

本文介绍了如何基于Redis设计和实现购物车功能,利用Redis的Hash结构存储用户购物车数据,详细阐述了Key的设计和Value的Json格式。还讨论了会员登录、商品验证、购物车操作逻辑,包括商品的添加、删除,以及使用JWT实现用户认证,自定义参数解析器简化控制层方法的会员信息获取。整个方案旨在提高购物车操作的性能和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于redis的购物车流程(不是很详细)

我在之前的项目中,做过购物车的功能,当时从表设计到最后用postman进行接口的测试,都是我负责做的。

考虑到用户操作购物车的性能问题,我当时做的是基于redis的购物车,将购物车的所有数据都存储到redis中。

当时用了redis中的hash结构来存储所有用户购物车的数据,咱们都知道在使用hash的时候,涉及到key,field,value这三个方面的参数信息,key这块我用了 CartInfo/CartMap/CartData 这个固定的字符串来表示,在field这块为了能够表示不同用户的购物车,我用来 member:会员id:cart/member:会员id/cart:会员id 来表示,在value这块我是把会员对应的整个购物车的信息都转换为Json格式进行了存储。整个购物车对应的数据结构是这个样子的。

购物车中包含 商品总件数,总价格,以及 购物车的商品项列表,在商品项中包含 商品id,商品名,商品单价,商品件数,商品图片,商品小计 等,这里面特别要注意的就是关于价格这块在java中要用bigDecimal这个数据类型,这样可以防止精度丢失。

只有会员登录后才能操作购物车,比如添加商品,删除商品等。关于登录这块,我采用的是基于token的用户登录,类似于自己写了一个jwt【java web token】。

这样用起来更加的灵活方便,在自定义的拦截器中,当通过了层层关卡的验证后,将会员信息存入到request中,这样在其他的控制层方法中就可以通过request来获取当前登录的用户信息。为了方便在每个控制层方法中获取会员信息,我采用了 spring中自定义的参数解析器,这样就避免了在每个控制层方法中都使用requst.getAttribue来获取会员信息,而是在自定义的参数解析器中写一遍即可。

具体我是这样做的,自定义了一个实现HandlerMethodArgumentResolver接口的参数解析器 类,这里面最主要有两个方法,supportsParameter和resolveArgument,在supportsParameter中我通过methodParameter获取参数的类型和我自定义的会员类进行对比如果相等则返回

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值