Redis缓存穿透问题

缓存穿透

缓存穿透是指客户端请求的数据在redis和mysql数据库中都不存在,redis中查询不到数据,请求每次都会打到mysql数据库中,给数据库造成压力。

 

 

解决方案

方法一:缓存空数据

如果mysql查询结果为空,就将一个空值写入到redis中,再次访问这个数据,就会从缓存中获取,以此保护后端数据源。(可以给写入的空值设置一个较短的过期时间,减少redis的内存消耗)

方法二:使用布隆过滤器

 

 

 在查询redis之前,通过布隆过滤器来判断数据是否存在,不存在就直接返回,存在就接着查询redis,往下执行。

  优点:内存占用较少,没有多余的key

  缺点:实现复杂 存在误判可能

解决缓存穿透的方案有:

 

缓存空值

布隆过滤

增强id的复杂度,避免被猜测id规律

做好数据的格式校验

加强用户权限校验

做好热点参数的限流

 

posted @ 2023-07-22 11:30  愿你所盼皆入怀  阅读(81)  评论(0)    收藏  举报