TairHash(exHash)是一種可為field設定到期時間和版本的Hash類型資料結構,提高了Hash資料結構的靈活性,簡化了很多情境下的業務開發工作。
TairHash簡介
TairHash不但和Redis Hash一樣支援豐富的資料介面和高處理效能,還改變了hash只能為key設定到期時間的限制,可以為field設定到期時間和版本,極大地提高了hash資料結構的靈活性,簡化了很多情境下的業務開發工作。TairHash使用高效的Active Expire演算法,可以在不對回應時間造成明顯影響的前提下,更高效的完成對field的到期判斷和刪除。
主要特徵
field支援單獨設定expire和version。
field支援高效靈活的主動、被動到期淘汰(expire)策略。
文法和原生Redis Hash資料類型類似。
該Module已開源,更多資訊請參見TairHash。
前提條件
注意事項
操作對象為Tair執行個體中的TairHash資料。
命令列表
表 1. TairHash命令
命令 | 文法 | 說明 |
| 向Key指定的TairHash中插入一個field。如果TairHash不存在則自動建立一個,如果field已經存在則覆蓋其值。 | |
| 擷取key指定的TairHash中一個field的值,如果TairHash不存在或者field不存在,則返回nil。 | |
| 同時向key指定的TairHash中插入多個field,如果TairHash不存在則自動建立一個,如果field已經存在則覆蓋其值。 | |
| 在key指定的TairHash中為一個field設定絕對到期時間,精確到毫秒。 | |
| 在key指定的TairHash中為一個field設定相對到期時間,單位為毫秒。 | |
| 在key指定的TairHash中為一個field設定絕對到期時間,精確到秒。 | |
| 在key指定的TairHash中為一個field設定相對到期時間,單位為秒。 | |
| 查看key指定的TairHash中一個field的剩餘到期時間,結果精確到毫秒。 | |
| 查看key指定的TairHash中一個field的到期時間,結果精確到秒。 | |
| 查看key指定的TairHash中一個field的目前的版本號。 | |
| 設定key指定的TairHash中一個field的版本號碼。 | |
| 將key指定的TairHash中一個field的value增加num,num為一個整數。如果TairHash不存在則自動新建立一個,如果指定的field不存在,則在加之前插入該field並將其值設定為0。 說明 為Key的field設定了逾時時間後,再次執行該命令時如果沒有設定逾時時間,該field將被設定為永不到期。 | |
| 將key指定的TairHash中一個field的value增加num,num為一個浮點數。如果TairHash不存在則自動新建立一個,如果指定的field不存在,則在加之前插入該field並將其值設定為0。 說明 為Key的field設定了逾時時間後,再次執行該命令時如果沒有設定逾時時間,該field將被設定為永不到期。 | |
| 同時擷取key指定的TairHash一個field的值和版本,如果TairHash不存在或者field不存在,則返回nil。 | |
| 同時擷取key指定的TairHash多個field的值,如果TairHash不存在或者field不存在,則返回nil。 | |
| 同時擷取key指定的TairHash多個field的值和版本。 | |
| 擷取key指定的TairHash中field個數,該命令不會觸發對到期field的被動淘汰,也不會將其過濾掉,所以結果中可能包含已經到期但還未被刪除的field。如果只想返回當前沒有到期的field個數,可以在命令中設定NOEXP選項。 | |
| 查詢key指定的TairHash中是否存在對應的field。 | |
| 擷取key指定的TairHash中一個field對應的value的長度。 | |
| 擷取key指定的TairHash中所有的field。 | |
| 擷取key指定的TairHash中所有field的值。 | |
| 擷取key指定的TairHash中所有field及其value。 | |
| 掃描Key指定的TairHash。 說明 僅記憶體型執行個體支援該命令。 | |
| 掃描Key指定的TairHash。 說明 僅持久記憶體型執行個體支援該命令。 | |
| 刪除key指定的TairHash中的一個field,如果TairHash不存在或者field不存在則返回0 ,成功刪除返回1。 | |
| 使用原生Redis的DEL命令可以刪除一條或多條TairHash資料。 |
本文的命令文法定義如下:
大寫關鍵字
:命令關鍵字。斜體
:變數。[options]
:選擇性參數,不在括弧中的參數為必選。A|B
:該組參數互斥,請進行二選一或多選一。...
:前面的內容可重複。
EXHSET
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 向Key指定的TairHash中插入一個field。如果TairHash不存在則自動建立一個,如果field已經存在則覆蓋其值。 說明
|
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHGET
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 擷取key指定的TairHash中一個field的值,如果TairHash不存在或者field不存在,則返回nil。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHMSET
類別 | 說明 |
文法 |
|
時間複雜度 | O(N) |
命令描述 | 同時向key指定的TairHash中插入多個field,如果TairHash不存在則自動建立一個,如果field已經存在則覆蓋其值。 說明 建立Key後,您可以通過EXHPEXPIREAT、EXHPEXPIRE、EXHEXPIREAT或EXHEXPIRE命令設定field的到期時間,您也可以通過EXPIRE或EXPIREAT命令設定Key的到期時間。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHPEXPIREAT
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 在key指定的TairHash中為一個field設定絕對到期時間,精確到毫秒。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHPEXPIRE
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 在key指定的TairHash中為一個field設定相對到期時間,單位為毫秒。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHEXPIREAT
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 在key指定的TairHash中為一個field設定絕對到期時間,精確到秒。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHEXPIRE
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 在key指定的TairHash中為一個field設定相對到期時間,單位為秒。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHPTTL
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 查看key指定的TairHash中一個field的剩餘到期時間,結果精確到毫秒。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHTTL
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 查看key指定的TairHash中一個field的到期時間,結果精確到秒。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHVER
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 查看key指定的TairHash中一個field的目前的版本號。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHSETVER
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 設定key指定的TairHash中一個field的版本號碼。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHINCRBY
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 將key指定的TairHash中一個field的value增加num,num為一個整數。如果TairHash不存在則自動新建立一個,如果指定的field不存在,則在加之前插入該field並將其值設定為0。 說明 為Key的field設定了逾時時間後,再次執行該命令時如果沒有設定逾時時間,該field將被設定為永不到期。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHINCRBYFLOAT
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 將key指定的TairHash中一個field的value增加num,num為一個浮點數。如果TairHash不存在則自動新建立一個,如果指定的field不存在,則在加之前插入該field並將其值設定為0。 說明 為Key的field設定了逾時時間後,再次執行該命令時如果沒有設定逾時時間,該field將被設定為永不到期。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHGETWITHVER
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 同時擷取key指定的TairHash一個field的值和版本,如果TairHash不存在或者field不存在,則返回nil。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHMGET
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 同時擷取key指定的TairHash多個field的值,如果TairHash不存在或者field不存在,則返回nil。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHMGETWITHVER
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 同時擷取key指定的TairHash多個field的值和版本。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHLEN
類別 | 說明 |
文法 |
|
時間複雜度 | 未設定NOEXP選項時是O(1),設定NOEXP選項時是O(N)。 |
命令描述 | 擷取key指定的TairHash中field個數,該命令不會觸發對到期field的被動淘汰,也不會將其過濾掉,所以結果中可能包含已經到期但還未被刪除的field。如果只想返回當前沒有到期的field個數,可以在命令中設定NOEXP選項。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHEXISTS
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 查詢key指定的TairHash中是否存在對應的field。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHSTRLEN
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 擷取key指定的TairHash中一個field對應的value的長度。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|
EXHKEYS
類別 | 說明 |
文法 |
|
時間複雜度 | O(N) |
命令描述 | 擷取key指定的TairHash中所有的field。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHVALS
類別 | 說明 |
文法 |
|
時間複雜度 | O(N) |
命令描述 | 擷取key指定的TairHash中所有field的值。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHGETALL
類別 | 說明 |
文法 |
|
時間複雜度 | O(N) |
命令描述 | 擷取key指定的TairHash中所有field及其value。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHSCAN
類別 | 說明 |
文法 |
|
時間複雜度 | 每次調用時是O(1),遍曆整個TairHash時是O(N)。 |
命令描述 | 掃描Key指定的TairHash。 說明 僅記憶體型執行個體支援該命令。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHSCANUNORDER
類別 | 說明 |
文法 |
|
時間複雜度 | 每次調用時是O(1),遍曆整個TairHash時是O(N)。 |
命令描述 | 掃描Key指定的TairHash。 說明 僅持久記憶體型執行個體支援該命令。 |
選項 |
|
傳回值 |
|
樣本 | 提前執行 命令樣本:
返回樣本:
|
EXHDEL
類別 | 說明 |
文法 |
|
時間複雜度 | O(1) |
命令描述 | 刪除key指定的TairHash中的一個field,如果TairHash不存在或者field不存在則返回0 ,成功刪除返回1。 |
選項 |
|
傳回值 |
|
樣本 | 命令樣本:
返回樣本:
|