Spec-Zone.ru › Redis

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

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

  • RedisTimeSeries
  • RedisTimeSeries Версия 1.2 уже здесь!

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

Spec-Zone.ru

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