Redis:布隆过滤器

布隆过滤器是一种有效的防御缓存穿透策略,通过多组哈希函数将数据库中的数据映射到二进制数组。当所有映射位置为1时,数据可能存在,否则肯定不存在。在查询时,先用哈希检查布隆过滤器,减少无效数据库查询。由于误判可能,可通过调整数组长度和哈希次数来平衡误差。删除数据时,可选择定时重建或采用计数型布隆过滤器来处理。
摘要由CSDN通过智能技术生成

作用:预防缓存穿透

服务器接口遭到恶意攻击,大量查询缓存中没有的数据,流量打到数据库,造成数据库故障。

布隆过滤器

布隆过滤器就是一个n位的二进制数组,利用多组哈希,将数据库中存在的数据在二进制数组中映射出来。

每组哈希会得到二进制数组的一个下标,所有下标都为1,则该数据可能存在,否则一定不存在。

请求过来,先进行哈希,去布隆过滤器验证该数据是否存在,这样可以在缓存层避免掉绝大部分穿透查询。

布隆过滤器存在误差。因为每个二进制位表示多个数据,因此,可以通过增加数组长度或者增加哈希次数来减小误差,但同时会带来CPU负载。建议误差范围在1%。

删除数据

删除数据时如何维护布隆过滤器。由于每个二进制位代表多个数据,因此不能直接删除掉某位。一般有两种处理办法

  • 定时异步重建布隆过滤器。比如每四个小时,在另一台服务器上重新生成过滤器,然后替代当前正在工作的过滤器。
  • 技术布隆过滤器。在每一位上再附加一个被引用次数的数据。删除数据时,该二进制位没有被引用,则置0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值