全部產品
Search
文件中心

ApsaraDB for Redis:exString

更新時間:Jun 08, 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命令
命令文法簡介
EXSETEXSET key value [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [KEEPTTL]

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

EXGETEXGET key

擷取TairString的value和version。

EXSETVEREXSETVER key version

設定目標key的version。

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

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

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

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

EXCASEXCAS key newvalue version

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

EXCADEXCAD key version

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

DELDEL 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