Redis中的缓存穿透

缓存穿透

缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,导致这些请求直接到了数据库上,对数据库造成了巨大的压力,可能造成数据库宕机。
缓存穿透
常见的解决方案:

1)缓存无效 key

如果缓存和数据库中都查不到某个 key 的数据就写一个到 Redis 中去并设置过期时间。
SET key value EX 60,这种方式可以解决请求的 key 变化不频繁的情况,将无效 key 的过期时间设置短一点。

2)布隆过滤器

布隆过滤器是一种由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的 List、Map、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是器返回的结果是概率性的,而且不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且存放在布隆过滤器的数据不容易删除。
布隆过滤器的处理过程

3)接口限流

根据用户或者 IP 对接口进行限流,对于异常频繁的访问行为,还可以采取黑名单机制,例如将异常 IP 列入黑名单。

  • 缓存空对象
    • 优点:实现简单,维护方便
    • 缺点:
      • 额外的内存消耗
      • 可能造成短期的不一致
  • 布隆过滤器
    • 优点:内存占用较少,没有多余的key
    • 缺点:
      • 实现复杂
      • 存在误判可能
  • 接口限流

相关推荐

  1. Redis缓存雪崩、缓存击穿、缓存穿透问题

    2024-03-23 18:26:04       22 阅读
  2. redis缓存击穿、缓存穿透缓存雪崩

    2024-03-23 18:26:04       21 阅读
  3. redis缓存雪崩,缓存穿透

    2024-03-23 18:26:04       19 阅读

最近更新

  1. 精通C#编程需要学习哪些常用框架?

    2024-03-23 18:26:04       0 阅读
  2. Redis高可用解决方案哨兵模式与集群模式的比较

    2024-03-23 18:26:04       0 阅读
  3. C#实用的工具类库

    2024-03-23 18:26:04       0 阅读
  4. 4085行代码还原2D我的世界(上)

    2024-03-23 18:26:04       1 阅读
  5. 大数据面试题之GreenPlum(1)

    2024-03-23 18:26:04       2 阅读
  6. 量化机器人能否识别市场机会?

    2024-03-23 18:26:04       1 阅读
  7. 探讨SpringMVC的工作原理

    2024-03-23 18:26:04       1 阅读
  8. CSS布局艺术:掌握水平与垂直对齐的秘诀

    2024-03-23 18:26:04       1 阅读
  9. SQL 游标

    2024-03-23 18:26:04       0 阅读

热门阅读

  1. Redis 哨兵是什么?哨兵配置详解

    2024-03-23 18:26:04       16 阅读
  2. Windows Server 2003 镜像

    2024-03-23 18:26:04       20 阅读
  3. rust - 基于AES-CBC-128的双重加密实现

    2024-03-23 18:26:04       20 阅读
  4. vue生命周期 和 最常用的mounted

    2024-03-23 18:26:04       18 阅读
  5. 物联网如何改善供应链的透明度和效率

    2024-03-23 18:26:04       17 阅读
  6. 关于Linux环境下的LXD及Docker提权

    2024-03-23 18:26:04       21 阅读
  7. dockers compose up 报no configuration file provided: not found

    2024-03-23 18:26:04       19 阅读
  8. H5 与 App、网页之间的通信

    2024-03-23 18:26:04       19 阅读
  9. 解锁算法效率:掌握时间复杂度O(n)的艺术

    2024-03-23 18:26:04       16 阅读