层峦叠嶂-布隆过滤器 >=4.0
背景: 讲个场景,比如我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,而他每次推荐都要去重,而如果用set结构去实现,则需要浪费的空间很大很大。布隆过滤器(Bloom Filter)就是为了专门解决这个问题的额,它相当于一个不怎么精确的set结构,当你使用它的contains方法判断某个对象是否存在时,他可能会误判。即当布隆过滤器说某个值存在时,这个值可能不存在;当它说某个值不存在时,那就肯定不存在。
使用方法
redis4.0之后提供了布隆过滤器插件
用docker安装体验Redis 4.0的布隆过滤器
> docker pull redislabs/rebloom # 拉取镜像
> docker run -p 6379:639 redislabs/rebloom # 运行容器
> redis-cli # 连接容器中的Redis服务
基本用法
> bf.add codehole user1 # 添加一个元素
(integer) 1
> bf.exists codehole user1
(integer) 1
> bf.exists codehole user2
(integer) 0
> bf.madd codehole user2 user3 user4
1)(integer) 1
2)(integer) 1
3)(integer) 1
> bf.mexists codehole user2 user3 user5
1)(integer) 1