全部產品
Search
文件中心

Tair:exString

更新時間:Jul 06, 2024

TairString(exString)是一種帶版本號碼的String類型資料結構,本文介紹TairString資料支援的命令。

TairString簡介

Redis的String僅由key和value組成,而TairString不僅包含key和value,還攜帶了版本(version),可用於樂觀鎖等情境。除此之外,TairString在Redis String加減功能的基礎上支援了邊界設定,可以將INCRBYINCRBYFLOAT的結果限制在一定的範圍內,超出範圍則提示錯誤。

主要特性

  • value攜帶版本號碼。

  • 使用INCRBYINCRBYFLOAT遞增資料時可設定變更範圍。

該Module已開源,更多資訊請參見TairString

最佳實務

前提條件

執行個體為Tair記憶體型持久記憶體型(小版本為1.2.3及以上)。

說明

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

注意事項

本文的操作對象為Tair執行個體中的TairString資料。

說明

Tair執行個體中可同時設定Redis String(即Redis原生String)和TairString,本文的命令無法對Redis String使用。

命令列表

表 1. TairString命令

命令

文法

簡介

EXSET

EXSET key value [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [KEEPTTL]

若key不存在,則建立新的key,並將value儲存到key中;若key已存在,則覆蓋原來value的值。

EXGET

EXGET key

擷取TairString的value和version。

EXSETVER

EXSETVER key version

設定目標key的version。

EXINCRBY

EXINCRBY key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

對TairString的value進行自增自減操作,num的範圍為long。

EXINCRBYFLOAT

EXINCRBYFLOAT key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

對TairString的value進行自增自減操作,num的範圍為double。

EXCAS

EXCAS key newvalue version

當目標key的version值與指定的version相等時,則更新key的value值;version不相等,則返回舊的value和version。

EXCAD

EXCAD key version

當目標key的version值與指定的version相等時,則刪除Key。

DEL

DEL key [key ...]

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

說明

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

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

  • 斜體:變數。

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

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

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

EXSET

類別

說明

文法

EXSET key value [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [KEEPTTL]

時間複雜度

O(1)

命令描述

若key不存在,則建立新的key,並將value儲存到key中;若key已存在,則覆蓋原來value的值。

選項

  • Key:TairString的key,用於指定作為命令調用對象的TairString。

  • value:為key設定的value。

  • EX:指定key的相對到期時間,單位為秒,為0表示馬上到期,不傳此參數表示不到期

  • EXAT:指定key的絕對到期時間,單位為秒,為0表示馬上到期,不傳此參數表示不到期

  • PX:指定key的相對到期時間,單位為毫秒,為0表示馬上到期,不傳此參數表示不到期

  • PXAT:指定key的絕對到期時間,單位為毫秒 ,為0表示馬上到期,不傳此參數表示不到期

  • NX:只在key不存在時寫入。

  • XX:只在key存在時寫入。

  • VER:版本號碼。

    • 如果key存在,和目前的版本號做比較:

      • 如果相等,寫入,且版本號碼加1。

      • 如果不相等,返回異常。

    • 如果key不存在或者key目前的版本為0,忽略傳入的版本號碼直接設定value,成功後版本號碼變為1。

  • ABS:絕對版本號碼。設定後,無論key當前的版本號碼是多少,完成寫入並將key的版本號碼覆蓋為該選項中設定的值。

  • KEEPTTL:延用該key原本設定的到期時間(Time to live,TTL資訊),該參數不能與EXPXEXATPXAT參數同時設定。

    說明

    若未設定KEEPTTL參數,也未設定EXPX等設定到期時間的參數,則該key的到期時間將被刪除,即表示該key不會到期。

傳回值

  • 執行成功:OK。

  • 指定了XX且key不存在:nil。

  • 指定了NX且key已經存在:nil。

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

樣本

命令樣本:

EXSET foo bar EX 10 NX ABS 100

返回樣本:

OK

EXGET

類別

說明

文法

EXGET key

時間複雜度

O(1)

命令描述

擷取TairString的value和version。

選項

  • Key:TairString的key,用於指定作為命令調用對象的TairString。

傳回值

  • 執行成功:value與version。

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

樣本

命令樣本:

EXGET foo

返回樣本:

1) "bar"
2) (integer) 1

EXSETVER

類別

說明

文法

EXSETVER key version

時間複雜度

O(1)

命令描述

設定目標key的version。

選項

  • Key:TairString的key,用於指定作為命令調用對象的TairString。

  • version:需要設定的版本號碼。

傳回值

  • 執行成功:1。

  • 若key不存在:0。

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

樣本

命令樣本:

EXSETVER foo 2

返回樣本:

(integer) 1

EXINCRBY

類別

說明

文法

EXINCRBY key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

時間複雜度

O(1)

命令描述

對TairString的value進行自增自減操作,num的範圍為long。

選項

  • Key:TairString的key,用於指定作為命令調用對象的TairString。

  • num:TairString進行自增自減操作的數值,必須為整數。

  • EX:指定key的相對到期時間,單位為秒,為0表示馬上到期,不傳此參數表示不到期

  • EXAT:指定key的絕對到期時間,單位為秒,為0表示馬上到期,不傳此參數表示不到期

  • PX:指定key的相對到期時間,單位為毫秒,為0表示馬上到期,不傳此參數表示不到期

  • PXAT:指定key的絕對到期時間,單位為毫秒 ,為0表示馬上到期,不傳此參數表示不到期

  • NX:只在key不存在時寫入。

  • XX:只在key存在時寫入。

  • VER:版本號碼。

    • 如果key存在,和目前的版本號做比較:

      • 如果相等,進行自增,且版本號碼加1。

      • 如果不相等,返回異常。

    • 如果key不存在或者key目前的版本為0,忽略傳入的版本號碼並進行自增操作,成功後版本號碼變為1。

  • ABS:絕對版本號碼。設定後,無論key當前的版本號碼是多少,完成寫入並將key的版本號碼覆蓋為該選項中設定的值。

  • MIN:設定TairString value的最小值。

  • MAX:設定TairString value的最大值。

  • KEEPTTL:延用該key原本設定的到期時間,該參數不能與EXPXEXATPXAT參數同時設定。

    說明

    若未設定KEEPTTL參數,也未設定EXPX等設定到期時間的參數,則該key的到期時間將被刪除,即表示該key不會到期。

傳回值

  • 執行成功:操作後value的值。

  • 若設定了MAX或MIN,而操作後的value超過了該範圍:(error) ERR increment or decrement would overflow。

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

樣本

提前執行EXSET foo 1命令。

命令樣本:

EXINCRBY foo 100 MAX 300

返回樣本:

(integer) 101

EXINCRBYFLOAT

類別

說明

文法

EXINCRBYFLOAT key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

時間複雜度

O(1)

命令描述

對TairString的value進行自增自減操作,num的範圍為double。

選項

  • Key:TairString的key,用於指定作為命令調用對象的TairString。

  • num:TairString進行自增自減操作的數值,類型為浮點數。

  • EX:指定key的相對到期時間,單位為秒,為0表示馬上到期,不傳此參數表示不到期

  • EXAT:指定key的絕對到期時間,單位為秒,為0表示馬上到期,不傳此參數表示不到期

  • PX:指定key的相對到期時間,單位為毫秒,為0表示馬上到期,不傳此參數表示不到期

  • PXAT:指定key的絕對到期時間,單位為毫秒 ,為0表示馬上到期,不傳此參數表示不到期

  • NX:只在key不存在時寫入。

  • XX:只在key存在時寫入。

  • VER:版本號碼。

    • 如果key存在,和目前的版本號做比較:

      • 如果相等,進行自增,且版本號碼加1。

      • 如果不相等,返回異常。

    • 如果key不存在或者key目前的版本為0,忽略傳入的版本號碼並進行自增操作,成功後版本號碼變為1。

  • ABS:絕對版本號碼。設定後,無論key當前的版本號碼是多少,完成寫入並將key的版本號碼覆蓋為該選項中設定的值。

  • MIN:設定TairString value的最小值。

  • MAX:設定TairString value的最大值。

  • KEEPTTL:延用該key原本設定的到期時間,該參數不能與EXPXEXATPXAT參數同時設定。

    說明

    若未設定KEEPTTL參數,也未設定EXPX等設定到期時間的參數,則該key的到期時間將被刪除,即表示該key不會到期。

傳回值

  • 執行成功:操作後value的值。

  • 若設定了MAX或MIN,而操作後的value超過了該範圍:(error) ERR increment or decrement would overflow。

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

樣本

提前執行EXSET foo 1命令。

命令樣本:

EXINCRBYFLOAT foo 10.123

返回樣本:

(integer) 11.123

EXCAS

類別

說明

文法

EXCAS key newvalue version

時間複雜度

O(1)

命令描述

當目標key的version值與指定的version相等時,則更新key的value值;version不相等,則返回舊的value和version。

選項

  • Key:TairString的key,用於指定作為命令調用對象的TairString。

  • newvalue:若key的version值與指定的version相等,將value修改為newvalue。

  • version:用於跟key的現有version值比較的值。

傳回值

  • 執行成功:["OK", "",最新的version]。中間的""為無意義的Null 字元串。

  • 執行失敗:["ERR update version is stale", value, version]。value和version為key當前的value和版本。

  • 若key不存在:-1。

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

樣本

提前執行EXSET foo bar命令。

命令樣本:

EXCAS foo bzz 1

返回樣本:

1) OK
2)
3) (integer) 2

EXCAD

類別

說明

文法

EXCAD key version

時間複雜度

O(1)

命令描述

當目標key的version值與指定的version相等時,則刪除Key。

選項

  • Key:TairString的key,用於指定作為命令調用對象的TairString。

  • version:用於跟key的現有version值比較的值。

傳回值

  • 執行成功:1。

  • 執行失敗:0。

  • 若key不存在:-1。

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

樣本

提前執行EXSET foo bar命令。

命令樣本:

EXCAD foo 1

返回樣本:

(integer) 1