商城项目中的缓存使用

今天我们聊一聊商城项目的业务中关于缓存的使用。在前面的内容中,我们已经介绍过商城业务中的核心接口,创建订单,https://www.inbai.net/article/141.html,在这篇文章里,我们详细介绍了创建订单的流程,不过我们更多的讨论的是业务分析,而没有深入去研究创建订单的性能。那么,今天我们就关于商城项目的性能方面,展开我们的话题,也就是在合适的地方使用上合适的缓存机制。

如果今天你是去面试,而你的简历中正好有商城项目,我想就商城项目的性能优化这一点,就够面试官问一上午了。下面,我们来盘点一下,商城当中,使用缓存的场景有哪些,又该如何恰当使用这些缓存。

场景一: 查询商品信息。
商城中,前端需要调用的几个商品信息查询的接口,一个是商品列表,另一个是商品详情。对于这两个接口,我们要设计合理的缓存。一种方法是,直接在接口上加Spring的缓存注解,但是这会有一个问题,哪个值作为商品的key?如果是商品详情,我们当然可以把商品的spuId或者skuId作为key,那商品列表呢?商品列表还会包括一些需要控制的部分,如筛选条件,如商品的价格区间,商品的名称,商品的分类,商品的库存数,商品的销量等等。还有一点是,商品列表会有分页,用户可能是从第二页开始查10个,也可能从第三页开始查30个。基于这两点看来,商品列表似乎不是一个简单的缓存列表就可以解决问题的。

我在这里提供一种方案,因为我们的商品列表数据都会用ES来做索引,单独查询ES的速度还是很快的。在查ES之前,我们加缓存,不是说有筛选条件,有分页就不能做缓存,当然是可以的,大不了就把入参都缓存到key里面。而且效率也是会很高,但是要设置好过期时间,不然如果有人恶意调接口的话,没几下缓存就满了。

另一种方案是,可以单独缓存查询条件和商品的id,具体的信息,通过商品id再查商品信息的缓存,这样一来,缓存的大小可以得到控制。

那这些查询商品详情的缓存,在哪些地方使用呢?首先是商品列表,然后通过商品列表进入商品详情页面,用户在实际下单时,查询商品详情,购物车列表中,展示商品详情。

场景二:查商品分类。

商品分类是肯定要做缓存的,因为这个基本属于不怎么变化的东西。

场景三:支付配置信息。

其实做了商城的话,一定会涉及到支付。那么,当我们支付的时候,有一堆支付配置信息需要获取,用这些信息组成client,发起支付。那这些支付配置,一方面是不怎么变化,另一方面是使用非常频繁,所以理当是缓存。

主要的场景是上面这些,下面再来说明一下,缓存中,哪些地方不是缓存?

比如一个这样的场景,用户下完订单之后,查订单需要展示商品详情,比如商品价格,商品名称,商品图片等等。这里的商品信息,能否通过商品详情的缓存来获取呢?答案是不能的。订单里的商品详情,是下单那一刻存进去的商品信息快照,对外展示时,不能调商品详情缓存展示,不然会出现价格不一致。

以上是关于商城项目业务分析中,使用缓存的一部分内容。

商城项目业务分析——使用缓存-尹白

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java商城项目面试问题: 1. 请简要介绍一下Java商城项目的架构设计。 Java商城项目的架构设计一般包括前端、后端和数据库三个部分。前端通常使用HTML、CSS和JavaScript等技术进行页面的设计和开发,后端使用Java语言,基于某个框架(如Spring)进行业务逻辑的处理和数据库的操作,数据库一般使用关系型数据库(如MySQL)进行数据的存储和管理。 2. 请谈谈你在Java商城项目的角色和职责。 在Java商城项目,我可以担任开发人员的角色,负责前端或后端的开发工作。前端开发主要包括页面设计和交互逻辑的实现,后端开发主要负责业务逻辑的编写和数据库操作的实现。我还负责与团队成员进行沟通和协作,与产品经理、设计师等共同推进项目的开发进展。 3. 请谈谈你在Java商城项目遇到的挑战和解决方法。 在Java商城项目,可能会遇到性能优化、安全性保障、并发控制等挑战。针对性能优化,可以通过缓存、异步处理和数据库优化等方法进行优化;在保障安全性时,可以使用安全认证和权限控制机制等;对于并发控制,可以使用锁或分布式锁等方式保证数据的一致性。 4. 请谈谈你在Java商城项目使用的技术和工具。 在Java商城项目,我使用过Spring框架进行后端业务逻辑开发,使用MySQL进行数据的存储和管理。同时,我还使用过HTML、CSS和JavaScript等前端开发技术,以及Eclipse、IntelliJ IDEA等开发工具进行项目的开发和调试。 5. 请谈谈你在Java商城项目的合作经验。 在Java商城项目,我与产品经理、设计师以及其他开发人员等团队成员紧密合作。我们进行需求分析、讨论功能实现、解决bug等工作时,我都能积极参与并提供自己的意见和建议。我善于沟通和协作,能够有效地与团队合作,共同推动项目的进展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值