秒杀系统 - 热点数据加缓存/前后端分离

本文探讨了缓存在秒杀系统中的重要性,包括页面缓存、URL缓存和对象缓存,阐述了缓存如何显著提高页面加载速度和减轻服务器负载。同时,介绍了前后端分离的优势,如提升开发效率、增强系统并发性能和适配性。通过实例展示了前后端分离前后的工作流程变化。
摘要由CSDN通过智能技术生成

页面缓存

为什么要加缓存

页面加载时间会显着影响用户体验,谷歌的实验表明,加载时间仅相差半秒,就可以将网络流量减少多达20%。而页面缓存技术可以改善网页的加载时间。

缓存的页面作为静态HTML,避免了对数据库的耗时查询。 实际上,页面缓存可以将服务器负载降低多达80%,这对于使用数据库信息以便将页面提供给用户的高流量网站特别有利。当然,页面缓存的缺点是用户无法查看页面的最新版本。但是,对于不包含动态功能或经常添加新信息的网站,这是用户快速查看该网站的最佳方式。

加缓存前

前端使用Thymleaf开发,服务收到to_list的请求之后,查询数据库得到数据,放入model中传给前端页面。
GoodsController.java

	@Autowired
	GoodsService goodsService; 
	@RequestMapping("/to_list")
	public String toList(Model model 
	){
    
		List<GoodsVo> list = goodsService.listGoodsVo(); //查询数据库
		model.addAttribute("goodsList",list);
		return "goods_list";
	}

goods_list.html

<body> 
<div>
  <div>秒杀商品列表</div>
  <table>
  	<tr><td>商品名称</td><td>商品图片</td><td>商品原价</td><td>秒杀价</td><td>库存数量</td><td>详情</td></tr>
  	<tr  th:each="goods,goodsStat : ${goodsList}">
                <td th:text="${goods.goodsName}"></td>
                <td ><img th:src="@{${goods.goodsImg}}" width="100" height="100" /></td>
                <td th:text="${goods.goodsPrice}"></td>
                <td th:text="${goods.miaoshaPrice}"></td>
                <td th:text="${goods.stockCount}"></td>
                <td><a th:href="'/goods/to_detail/'+${goods.id}">详情</a></td>
     </tr>
  </table>
</div>
</body>

压测结果:
线程数1000,每个线程在同一时间发送3个请求。
在这里插入图片描述
可以看出,整体的吞吐量是20/s左右。
在这里插入图片描述

加缓存后

在服务受到to_list的请求的时候,先去redis中查询有没有缓存,如果有的话直接返回。没有的话就去数据库中查到数据,然后手动渲染页面,存入redis中(生存时间是60秒),返回结果。

@Autowired
MiaoshaUserService userService;

@Autowired
RedisService redisService;

@Autowired
GoodsService goodsService;

@Autowired
ThymeleafViewResolver thymeleafViewResolver;

@Autowired
ApplicationContext applicationContext;

@RequestMapping(value="/to_list", produces="text/html")
@ResponseBody
public String 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛阳八中我最棒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值