[Redis] Redis 資料結構 - Hash
前言
上一篇探討了 Redis Lists 資料結構,本篇將紀錄 Redis 儲存物件用的資料結構 - Hash
什麼是 Hash?
屬於 field-value 集合,適合用於儲存物件,與 string
不同的點在於 Hash 可以是多個 field - value 成對存在
HSET && HGET && HGETALL && HSETNX
Ref: HSET、Ref: HGET、Ref: HGETALL
HSET
用於設置 hash,若指定的 field 已存在於 Redis,原有的 field 會被覆寫掉。而 HGET
則是取出指定的 hash field 對應的值。
HGETALL
則是取得指定的 hash 下所有 field-value
使用 HSETNX
,只有在該 field 不存在指定的 hash 時才可以設置(回傳值為 1),反之則不影響原來的 field 對應的 value (回傳值為 0)
語法:HSET
1 |
|
HGET
1 |
|
HSETNX
1 |
|
HGETALL
1 |
|
範例:
建立名為 student 的 hash,同時給定 name, gender, age 這些 field 對應的值
1 |
|
取得 student name 的值
1 |
|
取得 student 這個 hash 下的所有 field - value 對
1 |
|
使用 HSETNX
對 student 新增名為 hobby 的 field
1 |
|
再執行一次 HSETNX
對 student 新增同個名為 hobby 的 field,由於 hobby 這個 field 先前已存在 student 裡面,故回傳值為 0,且 hobby 還是保持原本的值
1 |
|
HMGET
相較於 HEGT
只能指定一個 field,HMGET
允許一次指定多個 field,取得對應的 value。 若指定的 field 已存在於 Redis,原有的 field 會被覆寫掉; 不存在 Redis 裡時,回傳值為 nil
語法:
1 |
|
範例:
延續上個 hash 範例的 student,這次同時指定 name, age 兩個 field 的值
1 |
|
field 不存在 Redis 裡時,回傳值為 nil
。
1 |
|
上方範例中 test 為原本不存於 student 的 field,故回傳值為 nil
HVALS && HKEYS
HVALS
用於取得指定的 Hash 底下所有的 value,而 HKEYS
則是取得指定的 Hash 底下所有的 key
語法:
1 |
|
範例:
延續上個 hash 範例的 student,取得 student 下的所有 values
1 |
|
取得 student 下的所有 keys
1 |
|
HEXISTS
用於檢查指定的 field 是否存在指定的 key 裡面。
- 回傳值為 1:該 field 存在指定的 key 裡面
- 回傳值為 0:該 field 不存在指定的 key 裡面 or key 本身就不存在 Redis
語法:
1 |
|
範例:
延續 student 的範例,分別檢查 name, test 這兩個 field 是否存在
1 |
|
HDEL
於目標 hash 中刪除一個至多個指定的 field
語法:
1 |
|
範例:
除除 student 裡的 hobby, age 這兩個 field
1 |
|
總結
OK! 透過前面的指令和範例了解如何對 Hash
key 裡的 field 取值、修改、查詢及刪除,下一篇會進入到 Redis 資料結構 - SET