redis 布隆过滤器
docker 安装 redis 布隆过滤器
docker pull redislabs/rebloom
docker run -itd --name rebloom -p 6378:6379 --restart=always redislabs/rebloom:latest
原理
- 布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在。这就是布隆过滤器的基本思想。
使用
- 比如某宝搜索商品,他把所有关键字通过布隆过滤器转换为位丢到bitmap中。
- 当用户搜索时也将关键字转换为bitmap的位,检索时如果在过滤器中不存在则直接return 空。
- 布隆过滤器类似hash 会存在碰撞,这个可以忽略不计,这种场景只要过滤掉大部分的恶意请求即可。
BF.ADD bloom apple ; # 向布隆过滤器中添加元素
BF.EXISTS bloom apple; # 判断元素是否在过滤器中存在(有可能误判)