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

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

在查询redis之前,通过布隆过滤器来判断数据是否存在,不存在就直接返回,存在就接着查询redis,往下执行。
优点:内存占用较少,没有多余的key
缺点:实现复杂 存在误判可能
解决缓存穿透的方案有:
缓存空值
布隆过滤
增强id的复杂度,避免被猜测id规律
做好数据的格式校验
加强用户权限校验
做好热点参数的限流

浙公网安备 33010602011771号