redis布隆过滤器的使用

1.使用场景:推荐系统给用户推荐新闻,避免重复推送。

需要考虑问题:从用户观看历史中筛选出没有看过的新闻进行推送,就需要数据库中频繁的使用exists进行查询,但是当用户量很大时,数据库很难顶住压力。

解决方法:

1.1.使用缓存?但是日子长了,会浪费很大空间,不是长久之计,不是很好的解决办法。

1.2.这时布隆过滤器就可以很好的解决这个需求了,可以节约90%以上的空间,缺点就是稍微有那么一点不准确,存在一定的误判率,但是对于这个新闻推送的可以忽略。

2.什么布隆过滤器

2.1其实布隆过滤器可以看成是一个不是很准确的set结构,只是在使用它的contains方法判断某个对象是否存在时会出现误判。但是它也不是特别的不精准,只要参数设置合理,那么它的精确度可以控制的足够精准,只会有小小的误判。

2.2当布隆过滤器说某个值存在时,那可能就不存在,如果说某个值不存在时,那肯定就是不存在了。

打个比方,当一个人说认识你时可能不认识你,当一个人说不认识你时那肯定就不认识了。当它说见过你时,可能根本没有见过面,只不过可能你的脸和它所认识人中某个人的脸相似度比较高,所以产生误判。

2.3对于上面的场景,当用户看过的新闻,肯定会被过滤掉,对于没有看多的新闻,可能会过滤极少的一部分(误判),但是绝大部分都可以准确识别。这样可以完全保证推送给用户的新闻都是无重复的。

3.centos安装redis的bloomfilter插件

https://blog.csdn.net/u013030276/article/details/88350641

4.bloomfilter使用

4.1 bf.add

语法:[bf.add  key  options]

127.0.0.1:6379> bf.ad
  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Redis布隆过滤器是一种基于布隆过滤器实现的数据结构,它可以用于高效地判断一个元素是否存在于集合中。在Redis中,通过使用BITMAPS和HASHES命令来实现布隆过滤器。 要使用Redis布隆过滤器,首先需要在Redis服务器上安装和配置Redis,并确保已经加载了布隆过滤器模块。然后,可以使用BF.ADD命令将元素添加到布隆过滤器中,使用BF.EXISTS命令查询元素是否存在于布隆过滤器中。 Redis布隆过滤器使用相对简单,但也存在一些注意事项。由于布隆过滤器是基于概率的数据结构,存在一定的误判率。为了减少误判率,可以增加二进制数组的位数或增加哈希次数。此外,由于布隆过滤器是基于内存的数据结构,需要确保Redis服务器具有足够的内存来存储布隆过滤器。 总之,通过安装和配置Redis服务器,并使用BF.ADD和BF.EXISTS命令,可以轻松地在Redis使用布隆过滤器来判断元素是否存在于集合中。但需要注意误判率和内存需求等因素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [redis使用布隆过滤器](https://blog.csdn.net/qq_40179653/article/details/125716731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python+Redis实现布隆过滤器](https://download.csdn.net/download/weixin_38751905/14912053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值