参见储备

语法
CF.RESERVE key capacity [BUCKETSIZE bucketsize]
  [MAXITERATIONS maxiterations] [EXPANSION expansion]
可用:
Redis 堆栈 / Bloom 1.0.0
时间复杂度:
O(1)

为初始指定容量创建一个空的 cuckoo 过滤器,其中包含一个子过滤器。

根据布谷鸟过滤器的行为,过滤器很可能在之前声明自己已满capacity达到;因此,填充率可能永远不会达到 100%。 填充率可以通过使用更大的bucketsize代价是更高的错误率。 当过滤器自我声明自身full,它将通过生成额外的子过滤器来自动扩展,但代价是性能降低和错误率增加。 新的子过滤器的创建方式为前一个子过滤器的大小乘以expansion. 与存储桶大小一样,其他子筛选器会线性增加错误率。

当存储分段大小为 1 时,最小误报率为 2/255 ≈ 0.78%。 较大的存储桶会线性增加错误率(例如,存储桶大小为 3 会产生 2.35% 的错误率),但会提高过滤器的填充率。

maxiterations指示尝试为传入指纹查找插槽的次数。 一旦滤波器满了,高maxIterations值会减慢插入速度。

如果可能,将自动使用先前子筛选器中未使用的容量。 过滤器最多可以增长 32 倍。

必需参数

key

是要创建的 Cuckoo 过滤器的键名称。

capacity

筛选器的估计容量。

容量四舍五入到下一个2^n数。

过滤器可能无法填充其容量的 100%。如果您想避免扩展,请确保预留额外的容量。

可选参数

BUCKETSIZE bucketsize

每个存储桶中的项目数。

较高的存储桶大小值可以提高填充率,但也会导致更高的错误率和略微降低的性能。

bucketsize是介于 1 和 255 之间的整数。默认值为 2。

MAXITERATIONS maxiterations

在将 filter 声明为 full 并创建其他 filter 之前尝试在存储桶之间交换项目的次数。

值越低,性能越好,数字越高,滤波器填充率越好。

maxiterations是介于 1 和 65535 之间的整数。默认值为 20。

EXPANSION expansion

创建新筛选器时,其大小是当前筛选器的大小乘以expansion.

expansion是介于 0 和 32768 之间的整数。默认值为 1。

扩展四舍五入到下一个2^n数。

返回值

返回以下回复之一:

例子

redis> CF.RESERVE cf 1000
OK

redis> CF.RESERVE cf 1000
(error) ERR item exists

redis> CF.RESERVE cf_params 1000 BUCKETSIZE 8 MAXITERATIONS 20 EXPANSION 2
OK

RATE THIS PAGE
Back to top ↑