Redis缓存穿透问题
缓存穿透
缓存穿透是指客户端请求的数据在redis和mysql数据库中都不存在,redis中查询不到数据,请求每次都会打到mysql数据库中,给数据库造成压力。
解决方案
方法一:缓存空数据
如果mysql查询结果为空,就将一个空值写入到redis中,再次访问这个数据,就会从缓存中获取,以此保护后端数据源。(可以给写入的空值设置一个较短的过期时间,减少redis的内存消耗)
方法二:使用布隆过滤器
在查询redis之前,通过布隆过滤器来判断数据是否存在,不存在就直接返回,存在就接着查询redis,往下执行。
优点:内存占用较少,没有多余的key
缺点:实现复杂 存在误判可能
解决缓存穿透的方案有:
缓存空值
布隆过滤
增强id的复杂度,避免被猜测id规律
做好数据的格式校验
加强用户权限校验
做好热点参数的限流
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!