1. 程式人生 > >Redis常用操作-------Hash(雜湊表)

Redis常用操作-------Hash(雜湊表)

1.HDEL key field [field ...]

刪除雜湊表 key 中的一個或多個指定域,不存在的域將被忽略。

在Redis2.4以下的版本里, HDEL 每次只能刪除單個域,如果你需要在一個原子時間內刪除多個域,請將命令包含在 MULTI / EXEC塊內。

可用版本:
>= 2.0.0
時間複雜度:
O(N),  N 為要刪除的域的數量。
返回值:
被成功移除的域的數量,不包括被忽略的域。
# 測試資料

redis
> HGETALL abbr 1) "a" 2) "apple" 3) "b" 4) "banana" 5) "c" 6) "cat" 7) "d" 8) "dog" # 刪除單個域 redis> HDEL abbr a (integer) 1 # 刪除不存在的域 redis> HDEL abbr not-exists-field (integer) 0 # 刪除多個域 redis> HDEL abbr b c (integer) 2 redis> HGETALL abbr 1) "d" 2
) "dog"

 

 

2.HEXISTS key field

檢視雜湊表 key 中,給定域 field 是否存在。

可用版本:
>= 2.0.0
時間複雜度:
O(1)
返回值:
如果雜湊表含有給定域,返回  1 。 如果雜湊表不含有給定域,或  key 不存在,返回  0 。

  

3.HGET key field

返回雜湊表 key 中給定域 field 的值。

可用版本:
>= 2.0.0
時間複雜度:
O(1)
返回值:
給定域的值。 當給定域不存在或是給定  key 不存在時,返回  nil 。

 

4.HGETALL key

返回雜湊表 key 中,所有的域和值。

在返回值裡,緊跟每個域名(field name)之後是域的值(value),所以返回值的長度是雜湊表大小的兩倍。

可用版本:
>= 2.0.0
時間複雜度:
O(N),  N 為雜湊表的大小。
返回值:
以列表形式返回雜湊表的域和域的值。 若  key 不存在,返回空列表。     

5.HINCRBY key field increment

為雜湊表 key 中的域 field 的值加上增量 increment 。

增量也可以為負數,相當於對給定域進行減法操作。

如果 key 不存在,一個新的雜湊表被建立並執行 HINCRBY 命令。

如果域 field 不存在,那麼在執行命令前,域的值被初始化為 0 。

對一個儲存字串值的域 field 執行 HINCRBY 命令將造成一個錯誤。

本操作的值被限制在 64 位(bit)有符號數字表示之內。

可用版本:
>= 2.0.0
時間複雜度:
O(1)
返回值:
執行 HINCRBY 命令之後,雜湊表  key 中域  field 的值。

6.HINCRBYFLOAT key field increment

為雜湊表 key 中的域 field 加上浮點數增量 increment 。

如果雜湊表中沒有域 field ,那麼 HINCRBYFLOAT 會先將域 field 的值設為 0 ,然後再執行加法操作。

如果鍵 key 不存在,那麼 HINCRBYFLOAT 會先建立一個雜湊表,再建立域 field ,最後再執行加法操作。

當以下任意一個條件發生時,返回一個錯誤:

  • 域 field 的值不是字串型別(因為 redis 中的數字和浮點數都以字串的形式儲存,所以它們都屬於字串型別)
  • 域 field 當前的值或給定的增量 increment 不能解釋(parse)為雙精度浮點數(double precision floating point number)

HINCRBYFLOAT 命令的詳細功能和 INCRBYFLOAT 命令類似,請檢視 INCRBYFLOAT 命令獲取更多相關資訊。

可用版本:
>= 2.6.0
時間複雜度:
O(1)
返回值:
執行加法操作之後  field 域的值。

7.HKEYS key

返回雜湊表 key 中的所有域。

可用版本:
>= 2.0.0
時間複雜度:
O(N),  N 為雜湊表的大小。
返回值:
一個包含雜湊表中所有域的表。 當  key 不存在時,返回一個空表。      

8.HLEN key

返回雜湊表 key 中域的數量。

時間複雜度:
O(1)
返回值:
雜湊表中域的數量。 當  key 不存在時,返回  0 。      

9.HMGET key field [field ...]

返回雜湊表 key 中,一個或多個給定域的值。

如果給定的域不存在於雜湊表,那麼返回一個 nil 值。

因為不存在的 key 被當作一個空雜湊表來處理,所以對一個不存在的 key 進行 HMGET 操作將返回一個只帶有 nil 值的表。

可用版本:
>= 2.0.0
時間複雜度:
O(N),  N 為給定域的數量。
返回值:
一個包含多個給定域的關聯值的表,表值的排列順序和給定域引數的請求順序一樣。

10.HMSET key field value [field value ...]

同時將多個 field-value (域-值)對設定到雜湊表 key 中。

此命令會覆蓋雜湊表中已存在的域。

如果 key 不存在,一個空雜湊表被建立並執行 HMSET 操作。

可用版本:
>= 2.0.0
時間複雜度:
O(N),  N 為  field-value 對的數量。
返回值:
如果命令執行成功,返回  OK 。 當  key 不是雜湊表(hash)型別時,返回一個錯誤。    

11.HSET key field value

將雜湊表 key 中的域 field 的值設為 value 。

如果 key 不存在,一個新的雜湊表被建立並進行 HSET 操作。

如果域 field 已經存在於雜湊表中,舊值將被覆蓋。

可用版本:
>= 2.0.0
時間複雜度:
O(1)
返回值:
如果  field 是雜湊表中的一個新建域,並且值設定成功,返回  1 。 如果雜湊表中域  field 已經存在且舊值已被新值覆蓋,返回  0 。       

12.HSETNX key field value

將雜湊表 key 中的域 field 的值設定為 value ,當且僅當域 field 不存在。

若域 field 已經存在,該操作無效。

如果 key 不存在,一個新雜湊表被建立並執行 HSETNX 命令。

可用版本:
>= 2.0.0
時間複雜度:
O(1)
返回值:
設定成功,返回  1 。 如果給定域已經存在且沒有操作被執行,返回  0 。

  

 

13.HVALS key

返回雜湊表 key 中所有域的值。

可用版本:
>= 2.0.0
時間複雜度:
O(N),  N 為雜湊表的大小。
返回值:
一個包含雜湊表中所有值的表。 當  key 不存在時,返回一個空表。