Spec-Zone.ru › Redis

BF.ADD

BF.ADD
Синтаксис
BF.ADD key item
Доступно в:
Redis Stack / Bloom 1.0.0
Сложность по времени:
O(k), где k — количество хеш-функций, используемых последним подфильтром

Создаёт пустой Bloom-фильтр с одним подфильтром для запрошенной начальной ёмкости и с верхним пределом error_rate. По умолчанию, фильтр автоматически масштабируется, создавая дополнительные подфильтры, когда capacity достигнуто. Новый подфильтр создаётся с размером предыдущего подфильтра, умноженного на expansion.

Хотя фильтр может масштабироваться, создавая подфильтры, рекомендуется зарезервировать предполагаемый необходимый capacity , так как обслуживание и запросы подфильтров требуют дополнительной памяти (каждый подфильтр использует дополнительные биты и хеш-функцию) и занимают больше времени ЦП, чем эквивалентный фильтр с правильной ёмкостью при создании.

Количество хеш-функций — -log(error)/ln(2)^2. Количество битов на элемент — -log(error)/ln(2) ≈ 1,44.

  • 1% вероятность ложноположительного результата требует 7 хеш-функций и 10,08 битов на элемент.
  • 0,1% вероятность ложноположительного результата требует 10 хеш-функций и 14,4 битов на элемент.
  • 0,01% вероятность ложноположительного результата требует 14 хеш-функций и 20,16 битов на элемент.

Параметры:

  • ключ: Ключ, по которому находится фильтр
  • вероятность_ложноположительных: Желаемая вероятность ложноположительных результатов. Вероятность — десятичное значение от 0 до 1. Например, для желаемой вероятности ложноположительного результата 0,1% (1 из 1000), вероятность_ложноположительных должна быть установлена в 0,001.
  • ёмкость: Количество записей, предполагаемых для добавления в фильтр. Если ваш фильтр позволяет масштабирование, производительность начнёт ухудшаться после добавления большего количества элементов, чем это число. Фактическое ухудшение зависит от того, насколько сильно предел был превышен. Производительность ухудшается линейно с количеством sub-filters.

Необязательные параметры:

  • НЕМАСШТАБИРУЕМЫЙ: Препятствует созданию дополнительных подфильтров, если достигнута начальная ёмкость. Немасштабируемые фильтры требуют немного меньше памяти, чем их масштабируемые аналоги. Фильтр возвращает ошибку, когда capacity достигнуто.
  • МАСШТАБИРОВАНИЕ: Когда capacity достигнуто, создаётся дополнительный подфильтр. Размер нового подфильтра — размер последнего подфильтра, умноженный на expansion. Если количество элементов, подлежащих хранению в фильтре, неизвестно, рекомендуется использовать значение expansion 2 или более, чтобы уменьшить количество подфильтров. В противном случае рекомендуется использовать значение expansion 1 для уменьшения потребления памяти. Значение масштабирования по умолчанию равно 2.

Возврат

Целочисленный ответ — "1", если такой элемент не существовал в фильтре, "0", если такой элемент, вероятно, был добавлен в фильтр ранее (возможны ложноположительные результаты).

Примеры

redis> BF.ADD bf item1
(integer) 0
redis> BF.ADD bf item_new
(integer) 1

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

Spec-Zone.ru

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