缓存常见问题

缓存常见问题

缓存穿透

概念:
查询缓存中没有,数据库也没有的数据,大量的请求都穿透了缓存层直达数据库,导致数据库因压力过大而宕机。
本质是一种人为攻击手段

解决方案:

  • 数据库不存在数据时,存放一个临时数据到缓存中

  • 布隆过滤器

    在查询缓存时,会先经过布隆过滤器,根据Redis的Key进行Hash并取模。
    根据取值后对应的位数组下标上值判断:
    都是1,则说明该数据在缓存中有可能存在,去缓存中查询
    至少有一个为0,表示该数据在缓存中不存在,直接返回

缓存击穿

概念: 某一个热点数据的key突然过期,造成大量请求直达数据

解决方案:

  • 数据永不过期(定时任务,凌晨流少的时候更新缓存)
  • 接口限流或降级
  • 分布式锁
  • 缓存预热

雪崩

概念: 缓存中在同一个时间点有大量的key同时过期,请求查询缓存中没有,直达数据库

解决方案:

  • 分布式锁
  • 热点数据永不过期
  • 随机过期时间

缓存一致性

缓存一致性问题,也叫双写一致性问题: 写数据库+写缓存 如何做到同步

  • 强一致性 上锁 性能差
  • 弱一致性 最终一致性
    • 先更新数据库,再删除缓存
    • 延迟双删 删除-写入-延迟片刻再删除
    • Canal+MQ
posted @ 2025-09-19 21:24  Breezy_space  阅读(15)  评论(0)    收藏  举报