TairTS は、Redis モジュール上に開発された時系列データ構造です。このデータ構造は、低レイテンシーかつ高同時実行性のインメモリ読み書きアクセスを提供し、高速なフィルタリングと集約クエリをサポートし、ストレージとコンピューティングの両方の機能を提供します。TairTS は、時系列データの処理を簡素化し、パフォーマンスを大幅に向上させます。
TairTS の概要
RedisTimeSeries と比較して、TairTS はより豊富な機能セットを提供します:
pkey を使用した複数タイムラインの集約クエリ。Pkey には追加のハッシュレイヤーがあります。
たとえば、foo pkey に、メトリック名とデバイス ID にちなんで名付けられた複数の skey (temperature:1、pressure:1、distance:1 など) を作成できます。その後、TairTS が提供する EXTS.S.MRANGE コマンドを実行して、デバイス ID が 1 の skey などのカスタムモニタリングデータを取得できます。RedisTimeSeries を使用して類似機能を実装する場合、ビジネスロジックコードに多くの集約クエリを挿入する必要があります。
図 1. TairTS と RedisTimeSeries の比較

以下に TairTS データの構造を説明します:
Pkey: タイムラインのセットを示す TairTS データの一部。pkey は複数の skey で構成されます。
Skey: タイムライン。skey は固定容量を持つ複数のチャンクで構成されます。各 skey には 1 つ以上の異なるラベルをアタッチできます。その後、skey はラベルでフィルターできます。
Chunk: データチャンク。チャンクは複数のデータポイントを格納できます。
各チャンクの容量はカスタマイズ可能です。圧縮が有効でない場合、チャンクは最大 256 のデータポイントを格納できます。ただし、圧縮が有効な場合、チャンクは 256 を超えるデータポイントを格納できます。
チャンクは最小の有効期限切れ単位です。チャンク内のすべてのデータポイントが有効期限切れになると、チャンクは削除されます。
Datapoint: タイムスタンプと DOUBLE 型の値を含む時系列データの一部。
ダウンサンプリング、属性フィルタリング、バッチクエリ、複数の数値関数の使用などのシナリオでの集約クエリ。この機能は、バッチクエリと集約を単一のコマンドに統合して、ネットワークの相互作用を減らし、1 桁ミリ秒の応答時間を提供します。
過去の時系列データの更新と蓄積。
タイムラインレベルの TTL 設定をサポートし、各タイムラインがタイムウィンドウに従って自動的にスクロールすることを保証します。
効率的な Gorilla 圧縮アルゴリズムと特定のストレージにより、コストを大幅に削減します。
典型的なシナリオ
モニタリングデータのストレージとコンピューティング
タイムウィンドウに基づくデータ分析
IoT のデータ分析と処理
ホットニュースのキャッシング
アプリケーションパフォーマンス管理 (APM) のための秒単位のモニタリング
スロットリングシナリオでのリスクコントロール
ベストプラクティス
準備
管理するインスタンスは、Tair DRAM ベースのインスタンスです。
インスタンスが Redis 5.0 と互換性のある DRAM ベースのインスタンスである場合、インスタンスのマイナーバージョンは 1.7.20 以降である必要があります。
最新のマイナーバージョンは、より多くの機能と高い安定性を提供します。インスタンスを最新のマイナーバージョンに更新することをお勧めします。詳細については、「インスタンスのマイナーバージョンを更新する」をご参照ください。インスタンスがクラスターインスタンスまたは読み書き分離インスタンスである場合は、すべてのコマンドが期待どおりに実行されるように、インスタンスのプロキシノードを最新のマイナーバージョンに更新することをお勧めします。
使用上の注意
管理する TairTS データは Tair インスタンスに格納されます。
TairTS は、リアルタイムで高同時実行性の書き込みとクエリをサポートしますが、ストレージ容量は限られています。期限切れのデータがタイムリーに削除されるように、TairTS データに TTL を指定することをお勧めします。
破壊的変更:
2024 年 7 月 22 日に、Redis 6.0 と互換性のある Tair DRAM ベースのインスタンスのバージョン 24.7.0.0 がリリースされました。このバージョンでは、ts-auto-del-empty-skey-enable という新しいパラメーターが導入され、デフォルトで yes に設定されています。これは、skey 内のすべてのデータポイントが期限切れになると、skey が自動的に削除されることを示します。ただし、Redis 6.0 と互換性のある Tair DRAM ベースのインスタンスの 24.7.0.0 より前のバージョンでは、データポイントが期限切れになった skey はデフォルトでは削除されません。
Redis 6.0 と互換性のある Tair DRAM ベースのインスタンスで TairTS を使用する前に、インスタンスをバージョン 24.7.0.0 以降にアップグレードし、ts-auto-del-empty-skey-enable パラメーター設定を確認して手動で調整することをお勧めします。これにより、デフォルトの動作の変更によるビジネスへの潜在的な影響を防ぐことができます。
コマンド一覧
表 1. TairTS コマンド
タイプ | コマンド | 構文 | 説明 |
基本的な書き込み操作 |
| TairTS pkey を作成します。同じ名前の pkey が既に存在する場合、pkey は作成できません。 | |
| 指定された pkey に skey を作成します。pkey が存在しない場合は、自動的に作成されます。同じ名前の skey が既に存在する場合、skey は作成できません。 説明 有効期限や圧縮を有効にするかどうかなど、skey のパラメーターを指定できます。 | ||
| 指定された skey のメタデータを変更します。DATA_ET 時間値のみ変更できます。 | ||
| データポイントを skey に挿入します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 | ||
| データポイントを pkey の複数の skey に挿入します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 | ||
| データポイントを skey に挿入します。挿入するデータポイントが正の値を持つ場合、挿入された値は skey に存在する最後のデータポイントの値に加算されます。データポイントが負の値を持つ場合、挿入された値は skey に存在する最後のデータポイントの値から減算されます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。デフォルトの初期値は 0 です。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 | ||
| データポイントを pkey の複数の skey に挿入します。挿入するデータポイントが正の値を持つ場合、挿入された値は各 skey に存在する最後のデータポイントの値に加算されます。データポイントが負の値を持つ場合、挿入された値は各 skey に存在する最後のデータポイントの値から減算されます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。デフォルトの初期値は 0 です。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 | ||
| pkey から skey と skey 内のすべてのデータポイントを削除します。 | ||
基本的な読み取り操作 |
| 指定された skey 内の最新のデータポイントの値をクエリします。 | |
| 指定された skey のメタデータをクエリします。メタデータには、データポイントの数、最新のデータポイントのタイムスタンプと値、および skey のラベル情報が含まれます。 | ||
| pkey 内で指定されたフィルター条件を満たす skey をクエリします。 | ||
集約操作 |
| 指定された時間範囲内に skey に存在するデータポイントの数をクエリします。時間範囲は閉区間です。 | |
| 指定された時間範囲内に複数の skey で指定されたフィルター条件を満たすデータポイントの数をクエリします。時間範囲は閉区間です。 | ||
| 指定されたフィルター条件を満たす pkey 内のデータポイントを集約します。集約のために 1 つ以上の skey を指定した場合、skey はまず EXTS.S.MRANGE コマンドが使用されたときと同じ方法で集約されます。その後、skey の集約結果に基づいて pkey が集約されます。 | ||
同時書き込み操作 |
| 指定された skey 内のデータポイントの値を変更します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 | |
| 指定された skey 内の複数のデータポイントの値を一度に変更します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 | ||
| 指定された skey 内のデータポイントの値を変更します。値を変更するための増分または減分を指定できます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。デフォルトの初期値は 0 です。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 | ||
| 指定された skey 内の複数のデータポイントの値を一度に変更します。値を変更するための増分または減分を指定できます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 | ||
汎用操作 |
| 1 つ以上の TairTS キーを削除します。 |
次の一覧は、このトピックで使用されるコマンド構文の規則について説明しています:
大文字のキーワード: コマンドキーワードを示します。イタリック体のテキスト: 変数を示します。[options]: 囲まれたパラメーターがオプションであることを示します。角括弧で囲まれていないパラメーターは指定する必要があります。A|B: 縦棒 (|) で区切られたパラメーターが相互に排他的であることを示します。パラメーターの 1 つだけを指定できます。...: この記号の前のパラメーターを繰り返し指定できることを示します。
EXTS.P.CREATE
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | TairTS pkey を作成します。同じ名前の pkey が既に存在する場合、pkey は作成できません。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.CREATE
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された pkey に skey を作成します。pkey が存在しない場合は、自動的に作成されます。同じ名前の skey が既に存在する場合、skey は作成できません。 説明 有効期限や圧縮を有効にするかどうかなど、skey のパラメーターを指定できます。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.ALTER
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された skey のメタデータを変更します。DATA_ET 時間値のみ変更できます。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.ADD
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | データポイントを skey に挿入します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.MADD
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n は skey の数を示します。 |
コマンドの説明 | データポイントを pkey の複数の skey に挿入します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力例: |
EXTS.S.INCRBY
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | データポイントを skey に挿入します。挿入するデータポイントが正の値を持つ場合、挿入された値は skey に存在する最後のデータポイントの値に加算されます。データポイントが負の値を持つ場合、挿入された値は skey に存在する最後のデータポイントの値から減算されます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。デフォルトの初期値は 0 です。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力の例: この時点で |
EXTS.S.MINCRBY
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n は skey の数を示します。 |
コマンドの説明 | データポイントを pkey の複数の skey に挿入します。挿入するデータポイントが正の値を持つ場合、挿入された値は各 skey に存在する最後のデータポイントの値に加算されます。データポイントが負の値を持つ場合、挿入された値は各 skey に存在する最後のデータポイントの値から減算されます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。デフォルトの初期値は 0 です。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 |
オプション |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.DEL
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | pkey から skey と skey 内のすべてのデータポイントを削除します。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.GET
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された skey 内の最新のデータポイントの値をクエリします。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.INFO
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された skey のメタデータをクエリします。メタデータには、データポイントの数、最新のデータポイントのタイムスタンプと値、および skey のラベル情報が含まれます。 |
オプション |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.QUERYINDEX
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n はフィルター条件に関与するセットの最大数を示します。 |
コマンドの説明 | pkey 内で指定されたフィルター条件を満たす skey をクエリします。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.RANGE
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n はデータポイントが属するチャンクの数を示します。 |
コマンドの説明 | 指定された時間範囲内に skey に存在するデータポイントの数をクエリします。時間範囲は閉区間です。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.MRANGE
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n はデータポイントが属するチャンクの数を示します。 |
コマンドの説明 | 指定された時間範囲内に複数の skey で指定されたフィルター条件を満たすデータポイントの数をクエリします。時間範囲は閉区間です。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.P.RANGE
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n はデータポイントが属するチャンクの数を示します。 |
コマンドの説明 | 指定されたフィルター条件を満たす pkey 内のデータポイントを集約します。集約のために 1 つ以上の skey を指定した場合、skey はまず EXTS.S.MRANGE コマンドが使用されたときと同じ方法で集約されます。その後、skey の集約結果に基づいて pkey が集約されます。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.RAW_MODIFY
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された skey 内のデータポイントの値を変更します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.RAW_MMODIFY
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n は skey の数を示します。 |
コマンドの説明 | 指定された skey 内の複数のデータポイントの値を一度に変更します。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey が自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
EXTS.S.RAW_INCRBY
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された skey 内のデータポイントの値を変更します。値を変更するための増分または減分を指定できます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。デフォルトの初期値は 0 です。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力の例: この時点で |
EXTS.S.RAW_MINCRBY
項目 | 説明 |
構文 |
|
時間計算量 | O(n)。n はデータポイントの数を示します。 |
コマンドの説明 | 指定された skey 内の複数のデータポイントの値を一度に変更します。値を変更するための増分または減分を指定できます。pkey または skey が存在しない場合、pkey または skey は自動的に作成されます。有効期限や圧縮を有効にするかどうかなど、skey のパラメーターは、skey がまだ存在しない場合に自動的に作成されたときにのみ有効になります。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
インデックスフィルタリング構文
Skey はラベルでフィルターできます。フィルター条件には次の構文が使用されます。
フィルター条件を指定する場合、次のコマンドの 1 つ以上を使用でき、EQ、CONTAINS、および LIST_MATCH ロジックのいずれかを使用する必要があります。
フィルターコマンド | 説明 | ロジック |
| ラベル L は V と等しい。 | EQ (等しい) |
| ラベル L は NULL ではありません。これは、skey にラベル L が含まれていることを示します。 | CONTAINS |
| ラベル L は v1、v2、または別の値です。 | LIST_TMATCH |
| ラベル L は V と等しくありません。 | NOEQ (等しい) |
| ラベル L は NULL です。これは、skey にラベル L が含まれていないことを示します。 | NOCONTAINS |
| ラベル L の値は、v1 や v2 などのリスト内のどの値とも一致しません。 | LIST_NOTMATCH |
集約構文
集約操作では、timeBucket パラメーターで指定された間隔に存在するデータが集約されます。次の集約タイプがサポートされています。
MAX: 最大値を返します。MIN: 最小値を返します。AVG: 平均値を返します。SUM: すべての値の合計を返します。FIRST: 最初の値を返します。LAST: 最後の値を返します。RANGE: 最小値から最大値までの範囲を返します。COUNT: 値の数を返します。STD.P: 母分散を返します。STD.S: 標本分散を返します。VAR.P: 母集団標準偏差を返します。VAR.S: 標本標準偏差を返します。
よくある質問
Q: Redis 5.0 と互換性のある一部の Tair DRAM ベースのインスタンスで、CHUNK_SIZE のデフォルト値が比較的小さいのはなぜですか?
A: バージョン 25.2.0.0 以降、CHUNK_SIZE はデフォルトで 256 に設定されています。以前のバージョンでは、CHUNK_SIZE はデフォルトで 32 に設定されていました。