缓存雪崩:同一时间大量缓存key失效或者Redis同时宕机,导致大量请求发到数据库上,带来巨大压力

缓存雪崩常见解决方案:
- 给不同的Key的TTL添加随机值(让失效时间离散分布,确保Key不会在同一时间大量失效)
- 利用Redis集群提高服务的可用性(主从集群、哨兵机制)
- 给缓存业务添加降级限流策略(比如快速失败机制,让请求尽可能打不到数据库上)
- 给业务添加多级缓存(浏览器缓存 -> Nginx反向代理缓存 -> Redis缓存 -> JVM本地缓存…)

缓存预热:缓存预热是指在系统启动之前或系统达到高峰期之前,将常用数据预先加载到缓存中,以提高缓存命中率和系统性能的过程。缓存预热的目的是模拟爆发式的请求,尽可能地避免缓存击穿和缓存雪崩,还可以减轻后端存储系统的负载,提高系统的响应速度和吞吐量。
哨兵模式:在集群模式下,监控Redis各个节点是否正常,如果主节点故障通过发布订阅模式通知其他节点,并进行故障转移,将其他正常的从节点指定为主节点。