前言
Redis8
新增布谷鸟过滤器,也是一种概率过滤器,用来判断集合中元素存在与否,跟布隆过滤器差不多,在某些场景下表现还可能优于布隆过滤器
布谷鸟过滤器
新增布谷鸟过滤器
使用CF.RESERVE
创建布谷鸟过滤器
css
CF.RESERVE key capacity [BUCKETSIZE bucketsize] [MAXITERATIONS maxiterations] [EXPANSION expansion]
key: 过滤器键值
capacity: 过滤器容量
bucketsize: 每个桶中的项目数
MAXITERATIONS: 决定了寻找传入指纹槽位的尝试次数
expansion: 创建新过滤器时,其大小是当前过滤器大小乘以 expansion
创建过滤器
perl
CF.RESERVE qq 1000
创建一个名为qq
的布谷鸟过滤器
重复创建会报

CF.ADD添加元素
使用
vbnet
CF.ADD key item
添加元素
重复添加也可以

CF.ADDNX
CF.ADDNX命令,不存在时,才会添加元素
vbnet
CF.ADDNX key item
执行
CF.ADDNX aa1 aa1
重复添加键值会报

CF.COUNT
CF.COUNT
命令是判断元素添加次数
vbnet
CF.COUNT key item

CF.DEL
CF.DEL
命令是删除一次元素,对于多次添加的,还是会存在
vbnet
CF.DEL key item
执行命令
CF.DEL aa aa
再次执行
CF.COUNT aa aa
输出结果为

CF.EXISTS
CF.EXISTS
是判断元素是否存在
vbnet
CF.EXISTS key item
执行命令
CF.EXISTS aa aa
输出结果为

找一个没有的元素

CF.MEXISTS
CF.MEXISTS
批量判断元素是否存在
css
CF.MEXISTS key item [item ...]
执行命令
CF.MEXISTS aa aa aa1 aa2
输出结果为

CF.INFO
CF.INFO
命令查看布谷鸟过滤器信息

不存在会报错

CF.INSERT
CF.INSERT
创建一个布谷鸟过滤器,并添加元素
css
CF.INSERT key [CAPACITY capacity] [NOCREATE] ITEMS item [item ...]
执行命令
objectivec
CF.INSERT qq CAPACITY 1000 ITEMS hello hello1 hello2
输出结果为

不存在则会创建

CF.INSERTNX
CF.INSERTNX
不存在则添加
css
CF.INSERTNX key [CAPACITY capacity] [NOCREATE] ITEMS item [item ...]
执行
objectivec
CF.INSERTNX qq1 CAPACITY 1000 ITEMS hello hello1 hello2 HELLO3
输出结果为

总结
Redis8
新增布谷鸟过滤器,现在可以借助Redis工具存,而不用自己写