命令 | 语法 | 说明 |
BF.RESERVE key error_rate capacity | 创建一个初始容量为 capacity,错误率为 error_rate的空 ExBloomFilter。 | |
BF.ADD key item | 在 key 指定的 ExBloomFilter 中添加一个元素。 | |
BF.MADD key item [item ...] | 在 key 指定的 ExBloomFilter 中批量添加多个元素。 | |
BF.EXISTS key item | 检查一个元素是否存在于 key 指定的 ExBloomFilter 中。 | |
BF.MEXISTS key item [item ...] | 批量检查多个元素是否存在于 key 指定的 ExBloomFilter 中。 | |
BF.INSERT key [CAPACITY capacity] [ERROR error_rate] [NOCREATE] ITEMS item [item ...] | 在 key 指定的 ExBloomFilter 中添加一个或多个元素,若指定 ExBloomFilter 不存在则自动创建(可在添加元素时为新建 ExBloomFilter 设定初始容量与预期错误率),也可设置为 ExBloomFilter 不存在时不自动创建。 | |
BF.INFO key | 查询 key 指定的 ExBloomFilter 的详细信息,如总元素数量、总过滤器层数,以及每一层的元素个数、错误率等。 |
命令 | 语法 | 说明 |
EXPIRE key seconds [NX | XX | GT | LT] | 设置 ExBloomFilter 的超时时间,超过该时间的 ExBloomFilter 会被自动删除。 | |
UNLINK key [key ...] | 异步删除一个或多个 ExBloomFilter。当通过 UNLINK 命令删除 ExBloomFilter 时,这些 ExBloomFilter 会被标记为待删除状态,而真正的删除操作会放在后台线程中进行,不会阻塞 Redis 的当前进程。 | |
DEL | DEL key [key ...] | 同步删除一个或多个 ExBloomFilter。当通过 DEL 命令删除 ExBloomFilter 时,删除操作会立即阻塞 Redis 当前线程,直到这些 ExBloomFilter 对应的内存空间被完全回收释放。如果待删除的 ExBloomFilter 数据量过大,可能会影响 Redis 整体性能。 |
类别 | 说明 |
命令语法 | BF.RESERVE key error_rate capacity |
时间复杂度 | O(1)。 |
命令描述 | 创建一个初始容量为 capacity,错误率为 error_rate的空 ExBloomFilter。 |
选项 |
说明 当实际添加的元素个数超过 capacity 值时,ExBloomFilter 会自动增加 Bloom Filter 层数实现扩容,持续扩容会使 ExBloomFilter 的层数不断增多,进而导致查询任务需遍历多层 Bloom Filter,严重降低性能。因此,如果对性能非常敏感,强烈建议提前规划好初始容量与预期错误率,尽量避免扩容操作。 |
返回值 |
|
示例 | 命令示例。 BF.RESERVE testbf 0.01 100 返回示例。 OK |
类别 | 说明 |
命令语法 | BF.ADD key item |
时间复杂度 | O(log N) ,其中 N 表示 ExBloomFilter 的过滤器层数。 |
命令描述 | 在 key 指定的 ExBloomFilter 中添加一个元素。 说明 若指定 ExBloomFilter 不存在,Redis 会自动创建一个初始容量(capacity)为 100,期望错误率(error_rate)为 0.01 的 ExBloomFilter。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 BF.ADD testbf test_i1 返回示例。 1 |
类别 | 说明 |
命令语法 | BF.MADD key item [item ...] |
时间复杂度 | O(log N) ,其中 N 表示 ExBloomFilter 的过滤器层数。 |
命令描述 | 在 key 指定的 ExBloomFilter 中批量添加多个元素。 说明 若指定 ExBloomFilter 不存在,Redis 会自动创建一个初始容量(capacity)为 100,期望错误率(error_rate)为 0.01 的 ExBloomFilter。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 BF.MADD testbf test_i1 test_i2 test_i3 返回示例。 1) 0 2) 1 3) 1 |
类别 | 说明 |
命令语法 | BF.EXISTS key item |
时间复杂度 | O(log N) ,其中 N 表示 ExBloomFilter 的过滤器层数。 |
命令描述 | 检查一个元素是否存在于 key 指定的 ExBloomFilter 中。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 BF.EXISTS testbf test_i1 返回示例。 1 |
类别 | 说明 |
命令语法 | BF.MEXISTS key item [item ...] |
时间复杂度 | O(log N) ,其中 N 表示 ExBloomFilter 的过滤器层数。 |
命令描述 | 批量检查多个元素是否存在于 key 指定的 ExBloomFilter 中。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 BF.MEXISTS testbf test_i2 test_i3 test_i4 返回示例。 1) 1 2) 1 3) 0 |
类别 | 说明 |
命令语法 | BF.INSERT key [CAPACITY capacity] [ERROR error_rate] [NOCREATE] ITEMS item [item ...] |
时间复杂度 | O(log N) ,其中 N 表示 ExBloomFilter 的过滤器层数。 |
命令描述 | 在 key 指定的 ExBloomFilter 中添加一个或多个元素,若指定 ExBloomFilter 不存在则自动创建(可在添加元素时为新建 ExBloomFilter 设定初始容量与预期错误率),也可设置为 ExBloomFilter 不存在时不自动创建。 |
选项 |
说明
说明
说明 NOCREATE 参数不能与 capacity 或 error_rate 同时设置,否则会返回 nil。
|
返回值 |
|
示例 |
|
类别 | 说明 |
命令语法 | BF.INFO key |
时间复杂度 | O(log N) ,其中 N 表示 ExBloomFilter 的过滤器层数。 |
命令描述 | 查询 key 指定的 ExBloomFilter 的详细信息,如总元素数量、总过滤器层数,以及每一层的元素个数、错误率等。 |
选项 | key:key 名称,用于指定作为命令调用对象的 ExBloomFilter。 |
返回值 |
|
示例 | 命令示例。 BF.INFO testbf 返回示例。 1) total_items:25,num_blooms:2 2) bytes:16 bits:128 hashes:7 hashwidth:64 capacity:13 items:13 error_ratio:0.01 3) bytes:64 bits:512 hashes:8 hashwidth:64 capacity:46 items:12 error_ratio:0.005 说明 返回结果的参数说明如下:
|