数据库
首页 > 数据库> > Redis5️⃣缓存异常:穿透、击穿、雪崩

Redis5️⃣缓存异常:穿透、击穿、雪崩

作者:互联网

1、缓存穿透

缓存穿透访问的 Key 不存在

解决方案

  1. 对空值缓存:若查询返回的数据为 null,将结果 null 进行缓存并设置较短的过期时间(通常不超过 5min)
  2. 设置白名单:使用 bitmaps 定义一个可访问名单。
    • 名单 ID 作为 bitmaps 的偏移量。
    • 每次访问数据时,将访问者 ID 与 bitmaps 中的 ID 进行比较。
    • 若访问者 ID 不在 bitmaps 中则进行拦截。
  3. 布隆过滤器:哈希函数 + 位图
    • 作用:检索一个元素是否在一个集合中。
    • 特点:空间效率和查询效率快,但有一定的误识别率和删除困难。
    • 做法:将所有可能存在的数据哈希到一个足够大的 bitmaps 中,请求访问不存在的数据时会被 bitmaps 拦截。
  4. 实时监控:当 Redis 的命中率骤低,需排查访问对象和访问数据,可设置黑名单限制服务。

2、缓存击穿

缓存击穿访问的某个 Key 缓存过期,且有大量并发请求

解决

  1. 预先设置热门数据:在 Redis 高峰访问前,将热门数据提前存入 Redis 中,增加热门数据 Key 的时长。

  2. 实时调整:实时监控热门的数据,调整对应 key 的过期时间。

3、缓存雪崩

缓存雪崩访问的多个 Key 缓存过期,且有大量并发请求

解决

标签:缓存,Redis5,Redis,bitmaps,访问,雪崩,Key,过期
来源: https://www.cnblogs.com/secretmrj/p/16162873.html