全部產品
Search
文件中心

ApsaraDB for Redis:TS

更新時間:Jul 31, 2024

TairTS是基於Redis Module開發的時序資料結構,提供低時延、高並發的記憶體讀寫訪問,及快速地過濾、彙總查詢功能,集儲存與計算為一體,在簡化了處理時序資料流程的同時,大幅度提高了效能。

TairTS簡介

相比RedisTimeSeries,TairTS提供了更豐富的功能:

  • 通過Pkey(額外一層Hash結構)結構,輕鬆實現Pkey層級(多時間軸)彙總查詢。

    例如您可以在foo(Pkey)中建立以各項指標名稱與裝置ID命名的Skey,例如temperature:1、pressure:1、distance:1等,可通過TairTS內建的EXTS.S.MRANGE命令輕鬆擷取裝置ID為1的自訂監控資訊,而使用RedisTimeSeries則需要在商務邏輯代碼中嵌入大量資料彙總運算才能實現該功能。

    圖 1. TairTS與RedisTS資料結構對比圖TairTS資料結構圖

    TairTS資料結構解析:

    • Pkey(一組時間軸):TairTS資料結構,可包含多個Skey。

    • Skey(一條時間軸):可包含多個固定容量的Chunk,每個Skey可設定不同的Label(標籤),可通過Label在海量資料中快速過濾目標Skey。

    • Chunk(資料區塊):可儲存多個DataPoint。

      • Chunk的容量支援自訂,最多包含256個DataPoint。

      • Chunk為最小的到期單元,即單個Chunk中所有Datapoint都到期後才會刪除該Chunk。

    • DataPoint(時序資料):包含一個時間戳記和一個value資料(double類型)。

  • 支援降採樣、屬性過濾、分批查詢、多種數值函數等條件下的彙總操作,將批量查詢與彙總計算整合到單條命令中,減少網路互動,實現毫秒級響應。

  • 支援對歷史時序資料的更新或累加。

  • 支援時間軸層級的TTL設定,保證每條時間軸都可以按時間視窗自動滾動。

  • 採用高效的Gorilla壓縮演算法與特定儲存,極大降低儲存成本。

典型情境

  • 監控資料的儲存與計算

  • APM秒級監控

  • IoT(物聯網)資料分析與處理

  • 限流風控

  • 熱點訊息的緩衝

  • 時間視窗函數

最佳實務

基於TairTS實現秒級監控

前提條件

執行個體為Tair記憶體型

當執行個體為記憶體型(相容Redis 5.0)時,小版本需要為1.7.20及以上。

說明

最新小版本將提供更豐富的功能與穩定的服務,建議將執行個體的小版本升級到最新,具體操作請參見升級小版本。如果您的執行個體為叢集執行個體或讀寫分離架構,請將代理節點的小版本也升級到最新,否則可能出現命令無法識別的情況。

注意事項

  • 操作對象為Tair執行個體中的TairTS資料。

  • TairTS的優勢為即時、高並發的寫入與查詢效能,缺陷為儲存容量有限,請合理設定TTL,及時淘汰到期資料。

  • 為節省記憶體空間,關於設定CHUNK_SIZE的建議如下:

    • 若Skey(時間軸)的平均資料點大於5,000個,設定CHUNK_SIZE為256(預設值)。

    • 若Skey(時間軸)的平均資料點小於5,000個,設定CHUNK_SIZE為平均資料點個數 / 20。例如某Skey的平均資料點為1,000,可以設定CHUNK_SIZE為50。

重要

Breaking Change公告:

2024年07月22日發布Tair記憶體型(相容Redis 6.0)24.7.0.0版本,該版本中新增了ts-auto-del-empty-skey-enable參數,預設為yes,表示當Skey中的所有資料點都到期時,會自動刪除Skey。但在Tair記憶體型(相容Redis 6.0)24.7.0.0之前的版本中,預設不會刪除資料點已到期的Skey。

在Tair記憶體型(相容Redis 6.0)執行個體使用TairTS前,建議將執行個體升級至24.7.0.0及以上版本,並確認、手動調整ts-auto-del-empty-skey-enable參數的策略,避免因預設行為的改變對業務產生影響。

命令列表

表 1. TairTS命令

類型

命令

文法

說明

基礎寫操作

EXTS.P.CREATE

EXTS.P.CREATE Pkey

建立一個新的Pkey(TairTS資料結構),若Pkey已存在則建立失敗。

EXTS.S.CREATE

EXTS.S.CREATE Pkey Skey [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 label2 val2 ...]

在指定的Pkey中建立一個Skey,若Pkey不存在則會自動建立,若Skey已經存在則建立失敗。

說明

您可以在建立Skey時設定其相關屬性,例如到期時間、是否開啟壓縮等。

EXTS.S.ALTER

EXTS.S.ALTER Pkey Skey [DATA_ET time]

修改指定Skey的中繼資料資訊,當前僅支援修改到期時間(DATA_ET)。

EXTS.S.ADD

EXTS.S.ADD Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

向Skey中插入一條Datapoint資料。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

EXTS.S.MADD

EXTS.S.MADD Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

在指定Pkey的多個Skey分中別插入一條Datapoint資料。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

EXTS.S.INCRBY

EXTS.S.INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

向Skey中插入一條Datapoint資料,該命令中的value將與Skey中最近Datapoint的value值相加實現遞增,也可以指定該命令中的value為負數實現遞減。若Pkey或Skey不存在則會自動建立,預設初始值為0,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

EXTS.S.MINCRBY

EXTS.S.MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

在指定Pkey的多個Skey分別插入一條Datapoint資料,該命令中的value將分別與各個Skey中最近Datapoint的value值相加實現遞增,也可以指定該命令中的value為負數實現相減。若Pkey或Skey不存在則會自動建立,預設初始值為0,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

EXTS.S.DEL

EXTS.S.DEL Pkey Skey

刪除指定Pkey中的單個Skey,並刪除目標Skey中所有的Datapoint資料。

基礎讀操作

EXTS.S.GET

EXTS.S.GET Pkey Skey

查詢指定Skey中最新的Datapoint資料。

EXTS.S.INFO

EXTS.S.INFO Pkey Skey

查詢指定Skey的中繼資料資訊,包含Datapoint數量、最近Datapoint的時間戳記與value值、Skey的標籤資訊等資訊。

EXTS.S.QUERYINDEX

EXTS.S.QUERYINDEX Pkey filter1 [filter2 ...]

在Pkey中自訂過濾條件(filter),查詢目標Skey。

彙總操作

EXTS.S.RANGE

EXTS.S.RANGE Pkey Skey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket]

在Skey中查詢指定時間內(包含指定時間點)的Datapoint資料。

EXTS.S.MRANGE

EXTS.S.MRANGE Pkey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...]

在Skey中自訂過濾條件(filter)與查詢時間點(包含指定時間點),查詢目標Datapoint資料。

EXTS.P.RANGE

EXTS.P.RANGE Pkey fromTs toTs pkeyAggregationType pkeyTimeBucket [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...]

在Pkey層級對符合過濾條件(filter)的Datapoint資料進行彙總,若您指定了Skey層級的彙總,則會優先進行Skey層級彙總(效果與EXTS.S.MRANGE命令相同),再從Pkey層級對第一次彙總結果進行二次彙總。

並發寫操作

EXTS.S.RAW_MODIFY

EXTS.S.RAW_MODIFY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

修改指定Skey中Datapoint資料的value值。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

EXTS.S.RAW_MMODIFY

EXTS.S.RAW_MMODIFY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

批量修改多個指定Skey中Datapoint資料的value值。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

EXTS.S.RAW_INCRBY

EXTS.S.RAW_INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

該命令中的value值會與指定Skey中Datapoint資料的value相加實現遞增,也可以指定該命令中的value為負數實現遞減。若Pkey或Skey不存在則會自動建立,預設初始值為0,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

EXTS.S.RAW_MINCRBY

EXTS.S.RAW_MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

批量修改多個指定Skey中Datapoint資料的value值,該命令中的value值會與指定Skey中Datapoint資料的value相加實現遞增,也可以指定該命令中的value為負數實現遞減。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

通用

DEL

DEL key [key ...]

使用原生Redis的DEL命令可以刪除一條或多條TairTS資料。

說明

本文的命令文法定義如下:

  • 大寫關鍵字:命令關鍵字。

  • 斜體:變數。

  • [options]:選擇性參數,不在括弧中的參數為必選。

  • A|B:該組參數互斥,請進行二選一或多選一。

  • ...:前面的內容可重複。

EXTS.P.CREATE

類別

說明

文法

EXTS.P.CREATE Pkey

時間複雜度

O(1)

命令描述

建立一個新的Pkey(TairTS資料結構),若Pkey已存在則建立失敗。

選項

  • Pkey:Key名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.P.CREATE foo

返回樣本:

OK

EXTS.S.CREATE

類別

說明

文法

EXTS.S.CREATE Pkey Skey [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 label2 val2 ...]

時間複雜度

O(1)

命令描述

在指定的Pkey中建立一個Skey,若Pkey不存在則會自動建立,若Skey已經存在則建立失敗。

說明

您可以在建立Skey時設定其相關屬性,例如到期時間、是否開啟壓縮等。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.CREATE foo temperature DATA_ET 10000000 LABELS sensor_id 1

返回樣本:

OK

EXTS.S.ALTER

類別

說明

文法

EXTS.S.ALTER Pkey Skey [DATA_ET time]

時間複雜度

O(1)

命令描述

修改指定Skey的中繼資料資訊,當前僅支援修改到期時間(DATA_ET)。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.ALTER foo temperature DATA_ET 100000

返回樣本:

OK

EXTS.S.ADD

類別

說明

文法

EXTS.S.ADD Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(1)

命令描述

向Skey中插入一條Datapoint資料。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

  • ts:Datapoint資料的Unix時間戳記,單位為毫秒,支援用*表示系統當前的時間戳記。

  • value:Datapoint資料的值,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.ADD foo temperature * 30.5 DATA_ET 1000000 LABELS sensor_id 1

返回樣本:

OK

EXTS.S.MADD

類別

說明

文法

EXTS.S.MADD Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(n),其中n為keynumber。

命令描述

在指定Pkey的多個Skey分中別插入一條Datapoint資料。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • keynumber:指定多條資料的個數。

  • Skey:Skey名稱。

  • ts:Datapoint資料的Unix時間戳記,單位為毫秒,支援用*表示系統當前的時間戳記。

  • value:Datapoint資料的值,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.MADD foo 3 temperature * 30.2 pressure * 2.05 distance * 0.5

返回樣本:

1) OK
2) OK
3) OK

EXTS.S.INCRBY

類別

說明

文法

EXTS.S.INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(1)

命令描述

向Skey中插入一條Datapoint資料,該命令中的value將與Skey中最近Datapoint的value值相加實現遞增,也可以指定該命令中的value為負數實現遞減。若Pkey或Skey不存在則會自動建立,預設初始值為0,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

  • ts:Datapoint資料的Unix時間戳記,單位為毫秒,支援用*表示系統當前的時間戳記。

  • value:待增加操作的值,可以指定該值為負數實現相減,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

提前執行EXTS.S.ADD foo temperature 1644310456023 30.0命令。

命令樣本:

EXTS.S.INCRBY foo temperature 1644372093031 2

返回樣本:

OK

若此時執行EXTS.S.GET foo temperature命令,將會返回如下結果:

1) (integer) 1644372093031
2) "32"

EXTS.S.MINCRBY

類別

說明

文法

EXTS.S.MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(n),其中n為keynumber。

命令描述

在指定Pkey的多個Skey分別插入一條Datapoint資料,該命令中的value將分別與各個Skey中最近Datapoint的value值相加實現遞增,也可以指定該命令中的value為負數實現相減。若Pkey或Skey不存在則會自動建立,預設初始值為0,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • keynumber:指定多條資料的個數。

  • Skey:Skey名稱。

  • ts:Datapoint資料的Unix時間戳記,單位為毫秒,支援用*表示系統當前的時間戳記。

  • value:待增加操作的值,可以指定該值為負數實現相減,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.MINCRBY foo 3 temperature * 0.2 pressure * -0.1 distance * 0.0

返回樣本:

1) OK
2) OK
3) OK

EXTS.S.DEL

類別

說明

文法

EXTS.S.DEL Pkey Skey

時間複雜度

O(1)

命令描述

刪除指定Pkey中的單個Skey,並刪除目標Skey中所有的Datapoint資料。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.DEL foo temperature

返回樣本:

OK

EXTS.S.GET

類別

說明

文法

EXTS.S.GET Pkey Skey

時間複雜度

O(1)

命令描述

查詢指定Skey中最新的Datapoint資料。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

傳回值

  • 執行成功:返回對應的Datapoint資料。

  • nil:表示Pkey或Skey不存在。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.GET foo temperature

返回樣本:

1) (integer) 1644372730150
2) "32.2"

EXTS.S.INFO

類別

說明

文法

EXTS.S.INFO Pkey Skey

時間複雜度

O(1)

命令描述

查詢指定Skey的中繼資料資訊,包含Datapoint數量、最近Datapoint的時間戳記與value值、Skey的標籤資訊等資訊。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

傳回值

  • 執行成功:返回Skey的中繼資料資訊。

  • nil:表示Pkey或Skey不存在。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.INFO foo temperature

返回樣本:

 1) totalDataPoints            // Datapoint數量。
 2) (integer) 1
 3) maxDataPoints              // Skey可儲存Datapoint數量的上限,預設為0(表示不限制)。
 4) (integer) 0
 5) maxDataPointsPerChunk      // 每個Chunk儲存的Datapoint個數。
 6) (integer) 32
 7) dataPointsExpireTime       // Skey的相對到期時間(DATA_ET),單位為毫秒,0表示不到期。
 8) (integer) 0
 9) lastTimestamp              // 最近Datapoint的時間戳記。
10) (integer) 1644389400996
11) chunkCount                 // Skey的chunk數量。
12) (integer) 1
13) lastValue                  // 最近Datapoint的value。
14) (integer) 28
15) labels                     // Skey的標籤資訊。
16) 1) 1) "sensor_id"
       2) "1"

EXTS.S.QUERYINDEX

類別

說明

文法

EXTS.S.QUERYINDEX Pkey filter1 [filter2 ...]

時間複雜度

O(n),其中n為過濾條件中的最大集合數。

命令描述

在Pkey中自訂過濾條件(filter),查詢目標Skey。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • filter:過濾條件,您可以根據Skey的標籤(LABELS)過濾目標Skey,更多資訊請參見索引過濾文法

    說明

    構建filter時,必須存在EQ、CONTAINS、LIST_MATCH邏輯中的任意一個,否則會查詢失敗。

傳回值

  • 執行成功:返回符合過濾條件的Skey。

  • nil:表示Pkey或Skey不存在。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.QUERYINDEX foo sensor_id=1

返回樣本:

1) "temperature"

EXTS.S.RANGE

類別

說明

文法

EXTS.S.RANGE Pkey Skey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket]

時間複雜度

O(n),其中n為目標Datapoint的資料區塊個數。

命令描述

在Skey中查詢指定時間內(包含指定時間點)的Datapoint資料。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

  • fromTs:查詢的開始時間(Unix時間戳記),單位為毫秒。

  • toTs:查詢的結束時間(Unix時間戳記),單位為毫秒,支援用*表示系統當前的時間戳記,若該值等於fromTs可實現單時間點查詢。

  • MAXCOUNT:指定返回的Datapoint條數,預設為不填(Tair的上限為1,000,000條)。

  • AGGREGATION

    • aggregationType:彙總類型,例如MAX(最大值)、AVG(平均值)、SUM(求和)等,更多資訊請參見彙總功能文法

    • timeBucket:採樣間隔,單位為毫秒,最小值為1,000毫秒。

      Tair會將該時間範圍內的資料進行彙總並返回一個結果,返回的時間點為採樣間隔的開始時間。

    例如AGGREGATION AVG 5000將返回每5,000ms的平均數。

傳回值

  • 執行成功:返回對應的Datapoint資料,若命令中指定了彙總,則返回彙總結果。

    說明

    返回結果中會額外返回一個token值,0表示已全部顯示,1表示還有合格Datapoint資料未顯示。您可以根據該值,同時將已返回結果中最後一個Datapoint的時間戳記作為開始時間繼續遍曆擷取,輕鬆實現分批彙總。

  • nil:表示Pkey或Skey不存在。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.RANGE foo test 1644459031662 * AGGREGATION AVG 10000 MAXCOUNT 2
// 求指定時間點內每10,000ms的平均數,同時指定返回2條資料。

返回樣本:

1) 1) 1) (integer) 1644459730000
      2) "20.6"
   2) 1) (integer) 1644459790000
      2) "21.2"
2) (integer) 1                    // 1表示還有合格Datapoint資料未顯示,0表示已全部顯示。

EXTS.S.MRANGE

類別

說明

文法

EXTS.S.MRANGE Pkey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...]

時間複雜度

O(n),其中n為目標Datapoint的資料區塊個數。

命令描述

在Skey中自訂過濾條件(filter)與查詢時間點(包含指定時間點),查詢目標Datapoint資料。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • fromTs:查詢的開始時間(Unix時間戳記),單位為毫秒。

  • toTs:查詢的結束時間(Unix時間戳記),單位為毫秒,支援用*表示系統當前的時間戳記,若該值等於fromTs可實現單時間點查詢。

  • MAXCOUNT:指定每個Skey返回的Datapoint條數,預設為不填(Tair的上限為1,000,000條)。

  • AGGREGATION

    • aggregationType:彙總類型,例如MAX(最大值)、AVG(平均值)、SUM(求和)等,更多資訊請參見彙總功能文法

    • timeBucket:採樣間隔,單位為毫秒,最小值為1,000毫秒。

      Tair會將該時間範圍內的資料進行彙總並返回一個結果,返回的時間點為採樣間隔的開始時間。

  • WITHLABELS:設定返回結果中是否包含標籤資訊,預設為不填(不顯示標籤資訊)。

  • filter:過濾條件,您可以根據Skey的標籤(LABELS)過濾目標Skey,更多資訊請參見索引過濾文法

    說明

    構建filter時,必須存在EQ、CONTAINS、LIST_MATCH邏輯中的任意一個,否則會查詢失敗。

傳回值

  • 執行成功:返回符合過濾條件的Skey組資訊。

  • nil:表示Pkey或Skey不存在。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.MRANGE foo 1644451031662 * AGGREGATION MAX 10000 WITHLABELS FILTER sensor_id=1

返回樣本:

1) 1) "temperature"
   2) 1) 1) "sensor_id"
         2) "1"
   3) 1) 1) (integer) 1644481000000
         2) "30"
   4) (integer) 0
2) 1) "test"
   2) 1) 1) "sensor_id"
         2) "1"
   3) 1) 1) (integer) 1644459730000
         2) "20"
      2) 1) (integer) 1644459790000
         2) "20"
      3) 1) (integer) 1644460620000
         2) "29"
   4) (integer) 0

EXTS.P.RANGE

類別

說明

文法

EXTS.P.RANGE Pkey fromTs toTs pkeyAggregationType pkeyTimeBucket [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...]

時間複雜度

O(n),其中n為目標Datapoint的資料區塊個數。

命令描述

在Pkey層級對符合過濾條件(filter)的Datapoint資料進行彙總,若您指定了Skey層級的彙總,則會優先進行Skey層級彙總(效果與EXTS.S.MRANGE命令相同),再從Pkey層級對第一次彙總結果進行二次彙總。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • fromTs:查詢的開始時間(Unix時間戳記),單位為毫秒。

  • toTs:查詢的結束時間(Unix時間戳記),單位為毫秒,支援用*表示系統當前的時間戳記,若該值等於fromTs可實現單時間點查詢。

  • pkeyAggregationType:Pkey的彙總類型,更多資訊請參見彙總功能文法

  • pkeyTimeBucket:Pkey的採樣間隔,單位為毫秒,最小值為1,000毫秒。

    Tair會將該時間範圍內的資料進行彙總並返回一個結果,返回的時間點為採樣間隔的開始時間。

  • MAXCOUNT:指定每個Skey返回的Datapoint條數,預設為不填(Tair的上限為1,000,000條)。

  • AGGREGATION

    • aggregationType:Skey的彙總類型,更多資訊請參見彙總功能文法

    • timeBucket:Skey的採樣間隔,單位為毫秒,最小值為1,000毫秒。

      Tair會將該時間範圍內的資料進行彙總並返回一個結果,返回的時間點為採樣間隔的開始時間。

  • WITHLABELS:設定返回結果中是否包含標籤資訊,預設為不填(不顯示標籤資訊)。

  • filter:過濾條件,您可以根據Skey的標籤(LABELS)過濾目標Skey,更多資訊請參見索引過濾文法

    說明

    構建filter時,必須存在EQ、CONTAINS、LIST_MATCH邏輯中的任意一個,否則會查詢失敗。

傳回值

  • 執行成功:返回彙總結果。

  • nil:表示Pkey或Skey不存在。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.P.RANGE foo 1644451031662 * SUM 500000 AGGREGATION SUM 10000 FILTER sensor_id=1

返回樣本:

1) 1) 1) (integer) 1644459500000
      2) "40"
   2) 1) (integer) 1644460500000
      2) "29"
   3) 1) (integer) 1644481000000
      2) "30"
2) (integer) 0

EXTS.S.RAW_MODIFY

類別

說明

文法

EXTS.S.RAW_MODIFY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(1)

命令描述

修改指定Skey中Datapoint資料的value值。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

  • ts:待更新Datapoint的Unix時間戳記,單位為毫秒。

  • value:待更新的值,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.RAW_MODIFY foo temperature 1644310456023 31.5

返回樣本:

OK

EXTS.S.RAW_MMODIFY

類別

說明

文法

EXTS.S.RAW_MMODIFY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(n),其中n為keynumber。

命令描述

批量修改多個指定Skey中Datapoint資料的value值。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • keynumber:指定多條資料的個數。

  • Skey:Skey名稱。

  • ts:待更新Datapoint的Unix時間戳記,單位為毫秒。

  • value:待更新的值,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.RAW_MMODIFY foo 3 temperature 1644565954814 30.2 pressure 1644565954814 2.05 distance 1644565954814 0.5

返回樣本:

1) OK
2) OK
3) OK

EXTS.S.RAW_INCRBY

類別

說明

文法

EXTS.S.RAW_INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(1)

命令描述

該命令中的value值會與指定Skey中Datapoint資料的value相加實現遞增,也可以指定該命令中的value為負數實現遞減。若Pkey或Skey不存在則會自動建立,預設初始值為0,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • Skey:Skey名稱。

  • ts:待更新Datapoint的Unix時間戳記,單位為毫秒。

  • value:待增加操作的值,可以指定該值為負數實現相減,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

提前執行EXTS.S.ADD foo temperature 1644310456 30.0命令。

命令樣本:

EXTS.S.RAW_INCRBY foo temperature 1644310456 3.3

返回樣本:

OK

若此時執行EXTS.S.GET foo temperature命令,將會返回如下結果:

1) (integer) 1644310456
2) "33.3"

EXTS.S.RAW_MINCRBY

類別

說明

文法

EXTS.S.RAW_MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...]

時間複雜度

O(n),其中n為keynumber。

命令描述

批量修改多個指定Skey中Datapoint資料的value值,該命令中的value值會與指定Skey中Datapoint資料的value相加實現遞增,也可以指定該命令中的value為負數實現遞減。若Pkey或Skey不存在則會自動建立,屬性(到期時間、是否開啟壓縮等)僅在Skey不存在並自動建立的情況下生效。

選項

  • Pkey:PKey名稱(TairTS資料結構),用於指定命令調用的TairTS對象。

  • keynumber:指定多條資料的個數。

  • Skey:Skey名稱。

  • ts:待更新Datapoint的Unix時間戳記,單位為毫秒。

  • value:待增加操作的值,可以指定該值為負數實現相減,資料類型為雙精確度浮點(double)型。

  • DATA_ET time:DataPoint資料的相對到期時間,單位為毫秒,預設為不填(表示不會到期)。

  • CHUNK_SIZE:單個Chunk可儲存的Datapoint數,預設值為256條,取值範圍為[1,256]。

  • UNCOMPRESSED:設定Skey不開啟壓縮,預設為不填(即開啟壓縮)。

  • LABELS:Skey的屬性,輸入一組或多組對應的標籤名、標籤值,例如LABELS sensor_id 1

傳回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常資訊。

樣本

命令樣本:

EXTS.S.RAW_MMODIFY foo 3 temperature 1644565954814 30.2 pressure 1644565954814 2.05 distance 1644565954814 0.5

返回樣本:

1) OK
2) OK
3) OK

索引過濾文法

您可以根據Skey的標籤(LABELS)過濾目標Skey。過濾條件(filter)的文法如下:

說明

構造filter時,支援如下所有命令及組合使用,但必須存在EQ、CONTAINS、LIST_MATCH邏輯中的任意一個。

filter命令

說明

邏輯

L = V

標籤L等於V。

EQ(equals)

L !=

標籤L不為NULL, 即目標Skey包含標籤L。

CONTAINS

L = (v1,v2,...)

標籤L為v1或v2等。

LIST_TMATCH

L != V

標籤L不等於V。

NOEQ(equals)

L =

標籤L為NULL, 即目標Skey不包含標籤L。

NOCONTAINS

L != (v1,v2,...)

標籤L不為v1和v2等。

LIST_NOTMATCH

彙總功能文法

彙總操作會對採集間隔(timeBucket)範圍內的資料進行彙總,支援如下彙總類型:

  • MAX:最大值

  • MIN:最小值

  • AVG:平均值

  • SUM:求和

  • FIRST:第一個值

  • LAST:最後一個值

  • RANGE:範圍(最大值 - 最小值)

  • COUNT:value數量

  • STD.P:總體方差

  • STD.S:樣本方差

  • VAR.P:總體標準差

  • VAR.S:樣本標準差