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.
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Временная метка заполняется автоматически.
См. также
Связанные темы
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/ts.incrby/