当前位置: 首页 > news >正文

多级缓存如何应用

什么是多级缓存

提到多级缓存,很多人第一时间想到通过Guava本地缓存+Redis分布式缓存组成的二级缓存。其实,多级缓存可并不只是这两层,在一些场景中,可能有很多层。
下面以一个电商的秒杀场景举例,说一说一个多级缓存的真实应用场景。

client
CND
Nginx
Guava
Redis

客户端缓存

	首先,离用户最近的一定是客户端了,比如我们使用的手机、电脑等,在手机上的APP以及电脑的浏览器 ,都是可以支持做缓存的。秒杀场景中,比较典型的客户端缓存的例子就是秒杀页面的倒计时。当用户第一次访问秒杀页面的时候,会向后端服务器请求查询秒杀开始时间,然后这个时间就可以在客户端进行缓存下来了。然后客户端自己就可以基于这个开始时间做倒计时了。设想一下,如果每一秒钟都要向后端发送请求,那么请求量实在是太大了,所以通过客户端缓存的方式,可以大大降低后端服务器的压力。

CDN缓存

	秒杀活动中,有很多商品相关的信息,比如商品的图片信息,这些前端的静态资源其实变化的频率并不是很高,那么其实就可以通过CDN来做缓存。这些静态资源,如图像、HTML、JavaScript 和视频。提前放到CDN中,让用户可以就近的访问到CDN快速的拿到静态资源。

Nginx缓存

	在客户端及CDN缓存的基本都一些静态的数据,但是还是有很多数据不适合做缓存的,那么这时候用户请求过来的话就要发送到后端服务器中。而在请求给到服务器之前,会先经过Nginx做负载均衡。为了提升请求的效率,降低对后端服务器的压力,很多时候我们也会在Nginx中做一些缓存。比如一些静态资源,除了放到CDN中,Nginx中也可以缓存一份,当没有CDN的时候,可以优先到Nginx中获取。在秒杀场景中,我们需要做一些用户的鉴权,比如用户是否登录,是否是黄牛用户,用户的IP是否被封禁。这些信息一般是放在Nginx中的,可以在这里面做一些前置的校验,把一些非法的请求就直接都给拒绝掉了。

Web App 缓存

	当Nginx请求过滤之后,有些合理请求就需要发送到Web App当中,这时候就会涉及到很多具体的业务逻辑了。但是,应用当中也会经常使用本地缓存来提升查询效率。但是本地缓存我们都知道,可能存在不一致的问题,						所以这里面存储的信息一般是变化没那么频繁的。比如一次秒杀活动的开始和结束时间、比如秒杀的用户的用户等级这些信息,基本都是变化没那么频繁的,就可以放到本地缓存中,可以快速的读取。

分布式缓存

	有些数据因为要考虑他的一致性,所以没办法放到本地缓存中,比如商品库存,这种就需要放到分布式缓存中,比如Redis。在秒杀场景中,我们经常使用Redis来做库存扣减,其实这就是利用了Redis来做缓存的一种具体案例。
http://www.lryc.cn/news/581859.html

相关文章:

  • C++高频知识点(二)
  • 【Pyhton】文件读取:读取整个(大型)文件
  • 铸造软件交付的“自动驾驶”系统——AI大模型如何引爆DevOps革命
  • mybatis-plus从入门到入土(二):单元测试
  • 深度学习图像分类数据集—蘑菇识别分类
  • 利用近距离全景图像进行树状结构骨架化
  • 每天一个前端小知识 Day 23 - PWA 渐进式 Web 应用开发
  • Linux国产与国外进度对垒
  • 如何使用xmind编写测试用例
  • 408第三季part2 - 计算机网络 - 应用层
  • 大数据Hadoop之——Flink1.17.0安装与使用(非常详细)
  • 分布式会话的演进和最佳实践,含springBoot 实现(Java版本)
  • 深度学习图像分类数据集—濒危动物识别分类
  • 李宏毅genai笔记:推理
  • Web攻防-XMLXXE上传解析文件预览接口服务白盒审计应用功能SRC报告
  • 网安系列【8】之暴力破解入门
  • Java设计模式之行为型模式(策略模式)介绍与说明
  • 125.【C语言】数据结构之归并排序递归解法
  • docker-compse安装nginx
  • Win11 安装 Visual Studio(保姆教程 - 更新至2025.07)
  • Altium Designer使用入门(非精通)教程 第三章(PCB绘制)
  • Application的onLowMemory从Android API 34开始系统不再触发,从API 35开始废弃
  • 【机器学习笔记Ⅰ】12 逻辑回归
  • get: ()=>state 和get: ()=>{state}
  • std::vector<bool>有什么特殊的吗
  • Podman与Docker详细比较:从原理到使用
  • 单片机总复习
  • 开关电源抄板学习
  • Spring Cloud Alibaba/Spring Boot整合华为云存储实例(REST API方式)
  • 反向遍历--当你修改一个元素的outerHTML时,该元素会被从 DOM 中移除