本文主要是介绍Redis缓存穿透解决方案—布隆过滤器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概念
Bloom Filter(以下简称 BF)是一个空间高效率的概率型数据结构,用来确定一个元素是否是集合中一员。
空间高效是指数据存储使用了 bit 的方式,相对来说比较紧凑,空间利用率较高。
概率型是指查询时返回两种结果:“一定不在” 和 “可能在”。
原理
本质就是bit 数组,初始化每个 bit 都是 0,添加一个元素时, 会使用 n 个 hash 函数计算出 n 个 值,每个值都是一个 bit 的位置,最后在 bit 数组中,将对应位的值置为1,这样每个元素都对应 n 个 bit 位。
查询一个元素是否在过滤器中时,首先使用 n 个 hash 函数计算出 n 个位置,然后到数组中去检查 对应 n 个下标的值是否为 1, 有一个是 0 ,直接返回 false 。
初始化:
插入元素:
查询:
这篇关于Redis缓存穿透解决方案—布隆过滤器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!