Spec-Zone.ru › Redis

TS.INCRBY

TS.INCRBY
Синтаксис
TS.INCRBY key value 
  [TIMESTAMP timestamp] 
  [RETENTION retentionPeriod] 
  [UNCOMPRESSED] 
  [CHUNK_SIZE size] 
  [LABELS {label value}...]
Доступно в:
Redis Stack / TimeSeries 1.0.0
Сложность по времени:
O(M), где M — количество правил компактизации, или O(1) без компактизации

Увеличивает значение выборки с максимальным существующим временным отметкой или создаёт новую выборку со значением, равным значению выборки с максимальной существующей временной отметкой, с заданным приращением.

Примеры

Обязательные аргументы

key

имя ключа временного ряда.

value

числовое значение данных выборки (double)

Примечания

  • При отсутствии указанного ключа создаётся новый временной ряд.
  • Вы можете использовать эту команду в качестве счётчика или счётчика, который автоматически получает историю в виде временного ряда.
  • Явное добавление выборок в сжатый временной ряд (используя TS.ADD, TS.MADD, TS.INCRBY, или TS.DECRBY) может привести к несоответствиям между сырыми и сжатыми данными. Процесс компактизации может переопределять такие выборки.

Необязательные аргументы

TIMESTAMP timestamp

(целое число) временная отметка выборки в формате Unix в миллисекундах или * для установки временной метки по часам сервера.

timestamp должна быть равна или больше максимальной существующей временной метки. Если они равны, значение выборки с максимальной существующей временной меткой увеличивается. Если она больше, создаётся новая выборка с временной меткой, установленной в timestamp, и её значение устанавливается в значение выборки с максимальной существующей временной меткой плюс value.

Если временной ряд пуст, значение устанавливается в value.

Если не указано, временная метка устанавливается по часам сервера.

RETENTION retentionPeriod

максимальный срок хранения, сравниваемый с максимальной существующей временной меткой, в миллисекундах. Используйте его только при создании нового временного ряда. Он игнорируется при добавлении выборок в существующий временной ряд. См. RETENTION в TS.CREATE.

UNCOMPRESSED

изменяет хранение данных со сжатого (по умолчанию) на несжатое. Используйте его только при создании нового временного ряда. Он игнорируется при добавлении выборок в существующий временной ряд. См. ENCODING в TS.CREATE.

CHUNK_SIZE size

размер памяти в байтах, выделенный для каждого фрагмента данных. Используйте его только при создании нового временного ряда. Он игнорируется при добавлении выборок в существующий временной ряд. См. CHUNK_SIZE в TS.CREATE.

LABELS [{label value}...]

набор пар имя-значение, которые представляют метаданные метки ключа и служат вторичным индексом. Используйте его только при создании нового временного ряда. Он игнорируется при добавлении выборок в существующий временной ряд. См. LABELS в TS.CREATE.

Примечания

  • Вы можете использовать эту команду для добавления данных в несуществующий временной ряд за одну команду. Вот почему RETENTION, UNCOMPRESSED, CHUNK_SIZE, и LABELS являются необязательными аргументами.
  • Если указано и ключ не существует, создаётся новый временной ряд. Установка RETENTION и LABELS приводит к дополнительной сложности по времени.

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

Целочисленный ответ — временная метка добавленной выборки или Ошибка ответа.

Примеры

Хранение суммы данных из нескольких источников

Предположим, вы получаете количество заказов или общую выручку в минуту из нескольких торговых точек и хотите сохранить только объединённое значение. Вызовите TS.INCRBY для каждого отчёта торговой точки.

127.0.0.1:6379> TS.INCRBY a 232 TIMESTAMP 1657811829000		// point-of-sale #1
(integer) 1657811829000
127.0.0.1:6379> TS.INCRBY a 157 TIMESTAMP 1657811829000		// point-of-sale #2
(integer) 1657811829000
127.0.0.1:6379> TS.INCRBY a 432 TIMESTAMP 1657811829000		// point-of-sale #3
(integer) 1657811829000

Обратите внимание, что временные метки должны поступать в порядке неубывания.

127.0.0.1:6379> ts.incrby a 100 TIMESTAMP 50
(error) TSDB: timestamp must be equal to or higher than the maximum existing timestamp

Вы можете добиться аналогичных результатов без такой защиты, используя TS.ADD key timestamp value ON_DUPLICATE sum.

Подсчёт событий датчика

Предположим, датчик срабатывает всякий раз, когда автомобиль проезжает по дороге, и вы хотите подсчитать количество событий. Каждый раз, когда вы получаете сигнал от датчика, вы можете просто вызвать:

127.0.0.1:6379> TS.INCRBY a 1
(integer) 1658431553109

Временная метка заполняется автоматически.

См. также

TS.DECRBY | TS.CREATE

Связанные темы

RedisTimeSeries

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

Spec-Zone.ru

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