TS.CREATE
TS.CREATE
TS.CREATE key
[RETENTION retentionPeriod]
[ENCODING [UNCOMPRESSED|COMPRESSED]]
[CHUNK_SIZE size]
[DUPLICATE_POLICY policy]
[LABELS {label value}...]
- Доступно в:
- Redis Stack / TimeSeries 1.0.0
- Временная сложность:
- O(1)
Создать новую временную серию
Обязательные аргументы
key
имя ключа для временной серии.
- Если ключ уже существует, вы получите ошибку Redis,
TSDB: key already exists. Вы можете проверить существование ключа с помощью командыEXISTS. - Другие команды, которые также создают новую временную серию при вызове с ключом, который не существует, это
TS.ADD,TS.INCRBYиTS.DECRBY.
Необязательные аргументы
RETENTION retentionPeriod
максимальный срок годности для образцов по сравнению с самым высоким отчётным временем в миллисекундах. Образцы истекают только на основе разницы между их отметкой времени и отметками времени, переданными в последующие вызовы TS.ADD, TS.MADD, TS.INCRBY и TS.DECRBY с этим ключом.
При значении 0 образцы никогда не истекают. Если не указано, параметр устанавливается в глобальную конфигурацию RETENTION_POLICY базы данных, которая по умолчанию равна 0.
ENCODING enc
устанавливает формат кодирования образцов серии как одно из следующих значений:
-
COMPRESSED, применяется сжатие к образцам серии. -
UNCOMPRESSED, сохраняет исходные образцы в памяти. Добавление этого флага сохраняет данные в несжатом виде.
COMPRESSED почти всегда является правильным выбором. Сжатие не только экономит память, но и обычно улучшает производительность из-за меньшего числа обращений к памяти. Это может привести к сокращению памяти примерно на 90%. Исключение составляют сильно нерегулярные отметки времени или значения, которые встречаются редко.
Если не указано, параметр устанавливается в COMPRESSED.
CHUNK_SIZE size
начальный размер выделения, в байтах, для части данных каждого нового блока. Фактические блоки могут потреблять больше памяти. Изменение chunkSize (с помощью TS.ALTER) не влияет на существующие блоки.
Должно быть кратно 8 в диапазоне [48 .. 1048576]. Если не указано, значение устанавливается в глобальную конфигурацию CHUNK_SIZE_BYTES базы данных, которая по умолчанию составляет 4096 (одна страница памяти).
Примечание: до версии v1.6.10 минимальное значение не применялось. Между v1.6.10 и v1.6.17 и в v1.8.0 минимальное значение было 128. С v1.8.1 минимальное значение составляет 48.
Данные в каждом ключе хранятся в блоках. Каждый блок содержит заголовок и данные на заданный промежуток времени. Индекс содержит все блоки. Итерации происходят внутри каждого блока. В зависимости от вашего случая, рассмотрите эти компромиссы для получения меньшего или большего размера блоков:
- Производительность вставки: меньшие блоки приводят к медленным вставкам (нужно создать больше блоков).
- Производительность запросов: запросы для малого подмножества, когда блоки очень большие, медленнее, так как нам нужно пройти по блоку, чтобы найти данные.
- Более крупные блоки могут занимать больше памяти, когда у вас очень большое количество ключей и очень мало образцов на ключ, или меньше памяти, когда у вас много образцов на ключ.
Если вы не уверены в своём случае, выберите значение по умолчанию.
DUPLICATE_POLICY policy
политика обработки вставки (TS.ADD и TS.MADD) нескольких образцов с одинаковыми метками времени, со следующими значениями:
-
BLOCK: игнорировать любое новое отчётное значение и ответить ошибкой -
FIRST: игнорировать любое новое отчётное значение -
LAST: переопределить новым отчётным значением -
MIN: переопределять только если значение меньше существующего значения -
MAX: переопределять только если значение больше существующего значения -
SUM: Если предыдущий образец существует, добавьте новый образец к нему, чтобы обновлённое значение было равно (предыдущее + новое). Если предыдущий образец не существует, установите обновлённое значение равным новому значению.
Если не указано, значение устанавливается в глобальную конфигурацию DUPLICATE_POLICY базы данных (которая по умолчанию равна BLOCK).
LABELS {label value}...
набор пар метка-значение, которые представляют метаданные метки ключа и служат вторичным индексом.
Команды TS.MGET, TS.MRANGE и TS.MREVRANGE работают с несколькими временными сериями на основе их меток. Команда TS.QUERYINDEX возвращает все ключи временных серий, соответствующие заданному фильтру на основе их меток.
Возвращаемое значение
Простой строковый ответ - OK при успешном выполнении или Ответ об ошибке в противном случае.
Примеры
Создать временную серию температуры
127.0.0.1:6379> TS.CREATE temperature:2:32 RETENTION 60000 DUPLICATE_POLICY MAX LABELS sensor_id 2 area_id 32
OKСм. также
TS.ADD | TS.INCRBY | TS.DECRBY | TS.MGET | TS.MRANGE | TS.MREVRANGE | TS.QUERYINDEX
Связанные темы
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/ts.create/