Redis缓存穿透、击穿、雪崩
Redis缓存穿透、击穿、雪崩
这三个知识点是面试必问,也是工作中使用Redis常见的问题。
缓存穿透
什么是缓存穿透
缓存穿透是指某个查询在缓存中不存在(无法命中),在数据库中也不存在,每次查询都会进入到数据库中,大量这样的请求或攻击将会给持久层服务器造成很大压力,造成服务器宕机。
解决方案
- 使用布隆过滤器,布隆过滤器是一种数据结构,会将所有可能的结果都映射到一个足够大的bit数组中,根据布隆过滤器可以将一定不存在的数据过滤掉,减轻服务器压力
- 将空值也缓存起来
缓存击穿
什么是缓存击穿
缓存击穿是指某一个热点数据在失效的瞬间,有大量请求发生,导致大量请求进入数据库中造成数据库宕机。典型场景:微博热搜
解决方案
- 热点数据永不过期
- 加锁,当大量请求进入,只有一个线程能够去数据库中读取数据
缓存雪崩
什么是缓存雪崩
缓存中大量数据在同一时刻失效,或者缓存服务器宕机,导致同一时刻所有的请求都进入数据库中,造成服务器宕机
解决方案
针对服务器宕机情形:构建Redis集群,异地多活,避免断电带来的问题
限流降级:加锁
数据预热:在正式部署之前,将所有可能的数据先访问一遍,对不同的key设置不同的过期时间
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库