Spec-Zone.ru › Redis

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/

Spec-Zone.ru

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