APPEND
APPEND
APPEND key value
- Доступно с версии:
- 2.0.0
- Временная сложность:
- O(1). Средняя временная сложность O(1), предполагая, что добавляемое значение мало, а уже имеющееся — любого размера, так как динамическая библиотека строк Redis удваивает доступное свободное пространство при каждой переаллокации.
- Категории ACL:
-
@write,@string,@fast,
Если key уже существует и является строкой, эта команда добавляет value в конец строки. Если key не существует, оно создаётся и устанавливается как пустая строка, поэтому APPEND будет аналогично SET в этом специальном случае.
Возврат
Целочисленный ответ: длина строки после операции добавления.
Примеры
EXISTS mykey APPEND mykey "Hello" APPEND mykey " World" GET mykey
Шаблон: временные ряды
Команда APPEND может использоваться для создания очень компактного представления списка выборок фиксированного размера, обычно называемого временными рядами. Каждый раз, когда поступает новая выборка, мы можем сохранить её с помощью команды
APPEND timeseries "fixed-size sample"
Доступ к отдельным элементам временного ряда несложен:
-
STRLENможет использоваться для получения количества выборок. -
GETRANGEпозволяет произвольно обращаться к элементам. Если у нашего временного ряда есть связанная информация о времени, мы можем легко реализовать бинарный поиск, объединивGETRANGEс интерпретатором Lua, доступным в Redis 2.6. -
SETRANGEможет быть использован для перезаписи существующего временного ряда.
Ограничение этого шаблона заключается в том, что мы вынуждены работать в режиме только добавления; нет простого способа обрезать временной ряд до заданного размера, потому что в Redis пока нет команды для обрезки объектов строк. Однако эффективность использования памяти для временных рядов, хранящихся таким образом, замечательна.
Подсказка: можно переключаться на другой ключ, основанный на текущем времени Unix, таким образом можно иметь только относительно небольшое количество выборок на ключ, чтобы избежать работы с очень большими ключами и сделать этот шаблон более дружественным для распределения по многим экземплярам Redis.
Пример взятия температуры датчика с использованием строк фиксированного размера (в реальных реализациях лучше использовать двоичный формат).
APPEND ts "0043" APPEND ts "0035" GETRANGE ts 0 3 GETRANGE ts 4 7
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/append/