redis搭配布隆过滤器避免缓存穿透

redis中如果请求的数据不在缓存中,则会直接访问数据库,可以使用布隆过滤器这一模块来处理缓存穿透的问题。

布隆过滤器由二进制位数组和哈希函数组成,向缓存存数据的时候,通过哈希函数计算哈希值,并且在数组中的哈希值位置存入一个二进制值,表示该值存在缓存中,同一个位置可能会有多个值,所以可能会出现判错的情况。

在读取数据的时候,通过哈希函数确定哈希值,在二进制数组中判断是否有该值,如果有则表示数据存在缓存中,直接在缓存中获取;如果没有则通过数据库获取数据。

因为不同的数据通过哈希算法计算的哈希值有可能相同,所以通过哈希在数组中值获取值时,并不一定就是需要的键值;而如果通过哈希值在数组中确定不存在时,数据就一定不存在缓存中。

相关推荐
何故染尘優19 分钟前
Redis 如何配置 Key 的过期时间?它的实现原理?
数据库·redis·缓存
野生技术架构师6 小时前
聊聊五种 Redis 部署模式
数据库·redis·缓存
C++chaofan12 小时前
项目中为AI添加对话记忆
java·数据结构·人工智能·redis·缓存·个人开发·caffeine
野熊佩骑13 小时前
一文读懂Redis之数据持久化
linux·运维·数据库·redis·缓存·中间件·centos
gsfl13 小时前
redis特性和应用场景
数据库·redis·缓存
理智的煎蛋15 小时前
基于 Celery 的分布式文件监控系统
redis·分布式·python·mysql·mongodb
Java永无止境17 小时前
延时任务之Redis 过期事件监听原理与缺陷
数据库·redis·缓存·延时任务
java1234_小锋18 小时前
Redis线上操作最佳实践有哪些?
数据库·redis·缓存
麦兜*1 天前
Redis多租户资源隔离方案:基于ACL的权限控制与管理
java·javascript·spring boot·redis·python·spring·缓存
gsfl1 天前
Redis 数据库管理与通信基础
数据库·redis·缓存