【Redis】Redis五大经典业务问题剖析及解决方法

一、缓存穿透

缓存穿透是指当请求的数据既不在缓存中也不存在于数据库中时,请求会直接穿透缓存层,到达数据库层。这通常是由于恶意攻击或者程序错误造成的,比如攻击者故意请求不存在的大量数据,导致缓存不命中,所有的请求都会落到数据库上,从而可能对数据库造成巨大的压力,影响其性能甚至导致崩溃通常是 thread_running 飙高。

解决方案

  • 布隆过滤器(Bloom Filter):布隆过滤器是一种数据结构,可以用来检测一个元素是否在一个集合中。在请求到达缓存之前,先通过布隆过滤器进行检查,如果布隆过滤器判断数据不存在,则直接返回错误响应,避免对数据库的访问。

  • 缓存空结果:当查询数据库后发现数据不存在时,可以将这个"空结果"也缓存起来,并设置一个较短的过期时间。这样当再次请求相同的数据时,可以直接从缓存中获取到"空结果",避免对数据库的访问。需要注意的是,这种方法可能会导致缓存被大量无用的空结果填满,所以需要合理设置过期时间。

  • 限制请求:对于异常频繁的访问行为,可以采取限流、封禁IP等手段进行限制。例如,可以对每个用户的访问频率、请求的速度等进行限制,超过限制则暂时封禁其请求。

  • 接口鉴权:在接口层

相关推荐

  1. 【Redis】Redis经典业务问题剖析解决方法

    2023-12-27 04:34:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-27 04:34:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-27 04:34:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-27 04:34:02       87 阅读
  4. Python语言-面向对象

    2023-12-27 04:34:02       96 阅读

热门阅读

  1. 字节经典面试题--找小于n的最大数

    2023-12-27 04:34:02       61 阅读
  2. 没有电脑想学Python或者做Python开发怎么办

    2023-12-27 04:34:02       56 阅读
  3. LeetCode 2884. 修改列

    2023-12-27 04:34:02       62 阅读
  4. vue3整合Element-Plus,极速上手。

    2023-12-27 04:34:02       48 阅读
  5. docker的常规使用总结

    2023-12-27 04:34:02       260 阅读