2026-10-19 10:40:33
Redis缓存雪崩、缓存穿透和缓存击穿的定义及解释如下:
1. 缓存雪崩
设置缓存的失效时间时,将key的失效时间分散开,避免大量key在同一时间失效。
集群部署Redis,将热点的key放到不同的节点上,均匀分布热点key的访问压力。
不设置缓存失效时间,让key永不失效(但需注意内存占用问题)。
2. 缓存穿透
如果请求穿透Redis直接打到数据库,无论数据库查出什么结果,都写回到Redis缓存中,以便下次请求时能被缓存拦截。
对请求的参数做合法性校验,避免非法参数导致的缓存穿透。
将恶意请求的IP拉黑。
使用布隆过滤器来过滤掉不存在的数据请求。
3. 缓存击穿
让这个热点key不过期,即不设置失效时间(但需注意内存占用和热点数据更新问题)。
使用分布式锁或互斥锁来确保在缓存失效时只有一个请求能够打到数据库上,其他请求则等待缓存更新后再访问。
总结:
以下是相关示意图:
缓存雪崩示意图:

缓存穿透示意图:

缓存击穿示意图:

这些示意图直观地展示了缓存雪崩、缓存穿透和缓存击穿的现象及其影响。