redis-缓存穿透及解决方案

一.什么是缓存穿透?

某查询缓存中在redis没有命中,会尝试从数据库中获取,从而导致大量请求到达数据库,如果数据库中本身没有该数据,会导致大量请求被送达数据库进行查询,这就导致数据库中并发的去执行了很多不必要的查询操作,从而导致巨大冲击和压力。

二.解决方案

*1.缓存空对象

如果缓存层和存储层都没有命中,设置key-null,为其缓存空对象,并设置过期时间

*2.布隆过滤器

使用布隆过滤器,维护一个bitmap。布隆算法可以客户端实现,也可以直接使用redis中额外引用的,bitmap可以由客户端维护,也可以由redis维护。大致是,bitmap中标记已有的数据,没有的数据直接由维护的bitmap过滤掉,从而不再访问数据库。存在一定概率误标记(概率小于1%),但是成本低。

redis集成布隆过滤器参考:https://blog.csdn.net/qq_41125219/article/details/119982158

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容