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

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

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

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

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

相关推荐
java1234_小锋20 小时前
Redis到底支不支持事务啊?
java·数据库·redis
Li_7695321 天前
Redis —— 基本数据类型 Set Zset (三)
redis
kkoral1 天前
单机docker部署的redis sentinel,使用python调用redis,报错
redis·python·docker·sentinel
java1234_小锋1 天前
Redis6为什么引入了多线程?
java·redis
DemonAvenger1 天前
Redis与MySQL双剑合璧:缓存更新策略与数据一致性保障
数据库·redis·性能优化
想用offer打牌1 天前
面试官问Redis主从延迟导致脏数据读怎么解决?
redis·后端·面试
墨白曦煜1 天前
深入剖析 Redis 客户端:Sentinel 模式下的“寻址”与“感知”艺术
数据库·redis·sentinel
遇见火星1 天前
Redis高可用-哨兵模式(Sentinel)
redis·sentinel
鸽鸽程序猿1 天前
【Redis】Java客户端使用Redis
java·redis·github
北城以北88881 天前
SpringBoot--Redis基础知识
java·spring boot·redis·后端·intellij-idea