Redis缓存穿透、击穿、雪崩

Redis缓存穿透、击穿、雪崩

这三个知识点是面试必问,也是工作中使用Redis常见的问题。

缓存穿透

什么是缓存穿透

缓存穿透是指某个查询在缓存中不存在(无法命中),在数据库中也不存在,每次查询都会进入到数据库中,大量这样的请求或攻击将会给持久层服务器造成很大压力,造成服务器宕机。

解决方案

  1. 使用布隆过滤器,布隆过滤器是一种数据结构,会将所有可能的结果都映射到一个足够大的bit数组中,根据布隆过滤器可以将一定不存在的数据过滤掉,减轻服务器压力
  2. 将空值也缓存起来

缓存击穿

什么是缓存击穿

缓存击穿是指某一个热点数据在失效的瞬间,有大量请求发生,导致大量请求进入数据库中造成数据库宕机。典型场景:微博热搜

解决方案

  1. 热点数据永不过期
  2. 加锁,当大量请求进入,只有一个线程能够去数据库中读取数据

缓存雪崩

什么是缓存雪崩

缓存中大量数据在同一时刻失效,或者缓存服务器宕机,导致同一时刻所有的请求都进入数据库中,造成服务器宕机

解决方案

针对服务器宕机情形:构建Redis集群,异地多活,避免断电带来的问题

限流降级:加锁

数据预热:在正式部署之前,将所有可能的数据先访问一遍,对不同的key设置不同的过期时间

posted @   Oh,mydream!  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示