缓存雪崩
缓存雪崩是指在同一时段出现大量的缓存key同时失效或者redis服务宕机时,导致大量请求直接到达数据库,给数据库带来巨大压力
解决方案
- 给不同的key的TTL添加随机值(尤其是缓存预热的时候,同时加入大批量数据)
- 利用Redis集群提高服务的可用性,多台Redis服务器,可以实现多台宏观调控
- 给缓存业务添加降级限流策略(SpringCloud中学):当服务器请求压力大时,直接拦截请求快速返回,不再让服务器承受那么多请求
- 给业务添加多级缓存(高级篇会讲):就是多端缓存,利用本地缓存等
缓存击穿
缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。
常见的解决方案有两种:
1、互斥锁
2、逻辑过期(内包含互斥锁)
解决方案实现流程
因为逻辑过期一般应用于活动商品的库存,不在活动内的商品,在缓存内肯定找不到的,所以缓存未命中直接返回null。