使用缓存的目的
提升性能
缓存分类
客户端
主要对浏览器的静态资源进行缓存,通过在浏览器端设置Expires(过期时间点)或者Cache-Control(时间段)来告诉浏览器将资源缓存到客户端本地,从而减少多次请求同一个静态资源带来的带宽和响应时效上的损耗。
应用层
- 主要表现形式为CDN(Content Delivery Network),可以有效解决带宽集中占用以及数据分发的问题。
- 通过Nginx实现负载均衡,将静态资源存储在Nginx服务器上,并开启压缩功能;
服务层
- 进程内缓存:比如Mybatis的一二级缓存,或者Spring框架中的@EnableCache注解。
- 进程外缓存:典型的使用redis作为分布式缓存技术。
数据层
分布式缓存引入的问题
数据一致性
如何保证数据一致性
引入消息队列的主动推送功能,推送变更消息
什么情况下适用多级缓存架构
- 缓存数据稳定
- 可能产生高并发场景,应用启动时进行预热处理,访问前将热点数据先缓存,减少后端压力
- 一定程度上允许数据不一致不重要的信息更新处理方式:T+1,ETL日中处理。