网站首页 > 技术文章 正文
提到多级缓存,很多人都想到通过Guava本地缓存与Redis分布式缓存结果,但实际上缓存结果远不止这两层。在一些场景中,可以有很多层。
以一个购物网站为例,从前到后,可以涉及到5级缓存。
5级缓存结构简图
客户端缓存:离用户最近的缓存,例如用电脑浏览网站,浏览器中的cookie,手机微信APP中的表情包,都是存储在用户自身电脑与手机中的。
CDN缓存:内容分发网络,是全球范围内离用户近的地方部署的用于存储网页、图片、视频等静态资源的一些边缘节点。例如,一个西藏用户浏览淘宝,淘宝的服务器假如部署在上海,那么数据从上海传输到西藏,流量存在浪费用户体验也不好,这时就可以提前将商品的图片,视频等静态资源部署在成都,大大缩短了流量成本,缩短用户体验。
NGINX缓存:WEB服务器缓存,nginx除了做负载均衡外,还可以做一些上述客户端和CDN无法做到的缓存。像网络购物中风控系统会基于用户IP甄别是否为黄牛,那么就可以把这些IP地址放到nginx黑名单中,用于过滤。
本地缓存:是单台应用服务器维度的缓存,会占用服务器本身存储空间与算力。假设一个分布式系统有5台应用服务器,那么这5台服务器中的缓存内容是独立且相同的,彼此不相互影响。本地缓存更多的是用来频繁地读,而非写。
分布式缓存:一种专门做存储的系统(单台服务器或集群)如Redis。只要向其存储一份数据,那么接入该分布式缓存的所有应用服务器可以获取到相同的内容,保证了数据的一致性。举个例子,淘宝商品库存可以放到Redis中,用户在服务器A下了一单库存减少为99同步更新到Redis,其他用户在服务器B看到的库存也会变成99。
扩展问题:
- 如果要设计一个秒杀系统,你会从哪些方面考虑缓存?
- 除了上述缓存外,还会有其他层级的缓存吗?
- 上一篇: 优化你的Vue应用:解锁keep-alive组件缓存的潜力
- 下一篇: PHP中的九大缓存技术
猜你喜欢
- 2025-10-19 SpringBoot反复读取Body失效?Wrapper缓存方案一次根治!
- 2025-10-19 今天聊聊 HTTP 缓存控制_http 缓存设置
- 2025-10-19 如何使用 Nginx 缓存提高网站性能 ?
- 2025-10-19 Nginx缓存实战:如何让性能飙升10倍!
- 2025-10-19 一次HTTP强缓存失效引发的浏览器缓存键深度探索
- 2025-10-19 深入解析 MyBatis 中的缓存机制_mybatis有几层缓存
- 2025-10-19 前端缓存破局:gulp-rev实现静态资源hash化全指南
- 2025-01-12 CDN+OpenResty 实现丝滑访问的登录态缓存站
- 2025-01-12 如何在Spring Boot中通过布隆过滤器防止缓存穿透问题?
- 2025-01-12 HTML5缓存机制浅析:移动端Web加载性能优化
你 发表评论:
欢迎- 最近发表
-
- Python常用标准库(pickle序列化和JSON序列化)
- Linux json-c使用_linux解析json数据
- 源码推荐(03.04):微信支付的测试,Json数据解析
- 打开JSON文件的六种方法,总有一种适合你
- springmvc项目中接收Android提交json数据
- 一篇文章让你详细了解何为JSON_json到底是什么
- FlinkSQL处理复杂JSON的思路_flinksql解析json数组
- 超级好用的轻量级JSON处理命令jq_json使用教程
- .NET性能系列文章二:Newtonsoft.Json vs System.Text.Json
- 推荐几个开发必备的JSON工具_推荐几个开发必备的json工具
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)