Spec-Zone.ru › Redis

CF.RESERVE

CF.RESERVE
Синтаксис
CF.RESERVE key capacity [BUCKETSIZE bucketsize]
  [MAXITERATIONS maxiterations] [EXPANSION expansion]
Доступно в:
Redis Stack / Bloom 1.0.0
Временная сложность:
O(1)

Создаёт фильтр Кука как key с одним подфильтром для начального количества capacity элементов. Из-за работы фильтров Кука, фильтр, вероятно, объявит себя полным до достижения capacity, и поэтому коэффициент заполнения, скорее всего, никогда не достигнет 100%. Коэффициент заполнения можно улучшить, используя больший bucketsize за счёт увеличения ошибки. Когда фильтр сам объявляет себя full, он автоматически расширяется, генерируя дополнительные подфильтры за счёт снижения производительности и увеличения вероятности ошибки. Новый подфильтр создаётся с размером предыдущего подфильтра, умноженным на expansion. Как и размер бакета, дополнительные подфильтры линейно увеличивают вероятность ошибки. Размер нового подфильтра — это размер последнего подфильтра, умноженный на expansion.

Минимальная вероятность ложноположительных результатов составляет 2/255 ≈ 0,78%, когда используется размер бакета 1. Большие бакеты линейно увеличивают вероятность ошибки (например, размер бакета 3 даёт вероятность ошибки 2,35%), но улучшают коэффициент заполнения фильтра.

maxiterations определяет количество попыток найти слот для входящего отпечатка пальца. После того, как фильтр заполнится, высокое значение maxIterations замедлит вставки.

Неиспользуемая ёмкость в предыдущих подфильтрах автоматически используется, когда это возможно. Фильтр может увеличиться до 32 раз.

Параметры:

  • key: Ключ, по которому находит фильтр.
  • capacity: Ожидаемая ёмкость фильтра. Емкость округляется до ближайшего 2^n числа. Фильтр, скорее всего, не заполнится до 100% своей ёмкости. Убедитесь, что вы зарезервировали дополнительную ёмкость, если хотите избежать расширений.

Дополнительные параметры:

  • bucketsize: Количество элементов в каждом бакете. Более высокое значение размера бакета улучшает коэффициент заполнения, но также приводит к большей вероятности ошибки и немного замедляет производительность. Значение по умолчанию равно 2.
  • maxiterations: Количество попыток поменять местами элементы между бакетами, прежде чем объявить фильтр полным и создать дополнительный фильтр. Низкое значение лучше для производительности, а более высокое значение лучше для коэффициента заполнения фильтра. Значение по умолчанию равно 20.
  • expansion: Когда создаётся новый фильтр, его размер равен размеру текущего фильтра, умноженному на expansion. Расширение округляется до ближайшего 2^n числа. Значение по умолчанию равно 1.

Возвращаемое значение

Простой строковый ответ - OK в случае успешного выполнения, или Ответ об ошибке в противном случае.

Примеры

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

© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/cf.reserve/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API