布隆过滤器--推荐系统去重

使用场景

我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。

基本思路1

服务器记录了用户看过的所有历史记录,当推荐系统推荐新闻时会从每个用户的历史记录里进行筛选,过滤掉那些已经存在的记录。但当用户量很大、每个用户看过的新闻又很多的情况下,去重就需要频繁地对数据库中每个用户的历史记录表进行 exists 查询,在高并发情况下非常影响系统性能。

基本思路2

使用缓存,将每个用户的历史浏览记录缓存起来,虽然查询速度提高了,但这需要耗费大量的内存。

Redis布隆过滤器实现思路

布隆过滤器相当于一个Redis中不精确的Set,它有exists方法判断某元素是否在集合中。通过设置其参数来确定精度,从而设置误判概率。当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在。也就是说,推荐系统认为该用户浏览过某条新闻时,用户实际上可能有小概率并没有浏览过这条新闻,但系统认为该用户没有浏览过某条新闻,用户一定没有浏览过这条新闻。这样就能确保用户一定不会浏览重复的内容。

基本指令

bf.add key value //往集合中添加元素(集合名 值)
bf.madd key value1 value2 value3 //往集合中添加多个元素(集合名 值1 值2 值3)

bf.exists key value //判断集合中是否存在该元素(集合名 值)
bf.mexists ke
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值