BF.INSERT
BF.INSERT
BF.INSERT key [CAPACITY capacity] [ERROR error] [EXPANSION expansion] [NOCREATE] [NONSCALING] ITEMS item [item ...]
- Доступно в:
- Redis Stack / Bloom 1.0.0
- Сложность по времени:
- O(k * n), где k — количество хеш-функций, а n — количество элементов
BF.INSERT — это усовершенствованная комбинация команд BF.RESERVE и BF.ADD. Она создаёт новый фильтр, если он не существует, используя соответствующие аргументы (см. BF.RESERVE). Затем все ITEMS добавляются в него.
Параметры
- key: Имя фильтра
-
item: Один или несколько элементов для добавления. Перед списком элементов для добавления должен стоять ключевое слово
ITEMS.
Дополнительные параметры:
-
NOCREATE: (Необязательно) Указывает, что фильтр не должен создаваться, если он ещё не существует. Если фильтр ещё не существует, возвращается ошибка, вместо его автоматического создания. Этот параметр может использоваться в случаях, когда требуется чёткое разделение создания фильтра и его добавления. Не допускается использование
NOCREATEвместе сCAPACITYилиERROR. -
capacity: (Необязательно) Указывает желаемый
capacityдля создаваемого фильтра. Этот параметр игнорируется, если фильтр уже существует. Если фильтр создаётся автоматически, а этот параметр отсутствует, то используетсяcapacityуровня модуля. См.BF.RESERVEдля получения дополнительной информации об этом значении. -
error: (Необязательно) Указывает
errorсоздаваемого фильтра, если он ещё не существует. Если фильтр создаётся автоматически, иerrorне указан, то используется значение ошибки уровня модуля. См.BF.RESERVEдля получения дополнительной информации о формате этого значения. -
NONSCALING: Запрещает создание дополнительных подфильтров, если достигнута начальная ёмкость. Фильтры без масштабирования требуют немного меньше памяти, чем их масштабируемые аналоги. Фильтр возвращает ошибку, когда
capacityдостигнута. -
expansion: Когда
capacityдостигнута, создаётся дополнительный подфильтр. Размер нового подфильтра — размер последнего подфильтра, умноженный наexpansion. Если количество элементов, которые необходимо сохранить в фильтре, неизвестно, рекомендуется использоватьexpansion2 или более, чтобы уменьшить количество подфильтров. В противном случае рекомендуется использоватьexpansion1, чтобы уменьшить потребление памяти. Значение расширения по умолчанию равно 2.
Возвращаемое значение
Массив булевых значений (целых чисел). Каждый элемент — либо true, либо false в зависимости от того, был ли соответствующий входной элемент добавлен в фильтр впервые, или он уже существовал.
Примеры
Добавление трёх элементов в фильтр с параметрами по умолчанию, если фильтр ещё не существует:
BF.INSERT filter ITEMS foo bar baz
Добавление одного элемента в фильтр с ёмкостью 10000, если фильтр ещё не существует:
BF.INSERT filter CAPACITY 10000 ITEMS hello
Добавление 2 элементов в фильтр со значением ошибки, если фильтр ещё не существует:
BF.INSERT filter NOCREATE ITEMS foo bar
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/bf.insert/