redis缓存穿透问题和解决方案
  KwMEFC6ft9HC 2023年11月02日 19 0

缓存穿透是指在高并发场景下,某些请求无法从缓存中获取到数据,导致请求一直访问后端数据库。这种情况通常发生在获取不存在的数据时。

例如,一个有恶意目的的用户可以通过构造不存在于缓存和数据库中的请求来不断地向数据库发起查询请求。由于缓存没有相应的键值对,每个请求都会进入数据库查询,导致数据库负载过高,甚至可能引发宕机等问题。

这种情况是绕过redis或者是本地缓存之间到达数据库

处理方法:

1、布隆过滤器

布隆过滤器是一种基于哈希的数据结构,可以高效地检查一个元素是否存在于一个集合中。当请求到达时,先判断该请求的参数经过哈希之后是否在布隆过滤器中,如果不在则直接返回。

2、缓存空对象

在查询数据库中没有结果时,将结果设置为空对象并缓存到缓存系统中,下次查询同样的参数会从缓存中获取结果。这样即使黑客恶意gongji也不会对数据库造成影响。

3、对热点数据永久缓存

对于访问频率较高的数据,可以将其永久缓存在缓存系统中,以减轻数据库的压力。

4、限流

通过限流算法,如令牌桶算法或漏桶算法,来控制请求的流量,防止大量无效请求同时访问数据库。

5、检测和拦截非法请求

通过检测请求参数的合法性,如长度、类型等,来防止非法请求进入系统,避免缓存穿透的发生。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月09日   30   0   0 cii++数据