Redis研究(四)—雜湊型別
阿新 • • 發佈:2019-01-26
雜湊型別(hash)的鍵值也是一種字典結構,其儲存了欄位(field)和欄位值的對映,但欄位值只能是字串,不支援其他資料型別。
雜湊型別不能巢狀其他的資料型別。一個雜湊型別鍵可以包含至多2^32-1個欄位。
一、介紹
雜湊型別適合儲存物件:使用物件類別和ID構成鍵名,使用欄位表示物件的屬性,而欄位值則儲存屬性值。
如果要關係資料中儲存汽車物件:
資料是以二維表的形式儲存的,這就要求所有的記錄都有同樣的屬性,無法單獨為某條記錄增減屬性。如果想要為ID為1的汽車增加生產日期屬性,就需要把資料表更改為
ID為2和3的兩條記錄來說data欄位是冗餘的。資料量多難以維護。
但是,Redis就可以自由的為任何鍵增減欄位而不影響其他鍵。
二、命令
1.賦值與取值
hset key field value
hget key field
hmset key f1 v1 f2 v2......
hmget key f1 f2.....
hgetall key
hset不區分插入和更新操作,當執行的是插入時(之前欄位不存在)hset返回1,當執行的是更新操作(之前欄位已經存在)時hset返回0.當鍵本身不存在時hset還會自動建立它。
hgetall命令獲取鍵中所有的欄位和欄位值。
2.判斷欄位是否存在
hexists key field
存在返回1,不存在返回0,當鍵不存在也返回0
3.當欄位不存在時賦值
和hset區別如果欄位已經存在,hsetnx命令不執行任何操作,原子操作,不用擔心競態條件。
hsetnx key field value
4.增加數字
hincrby key field increment
5.刪除欄位
hdel key f1 f2...
三、實踐
儲存一篇文章
第一種方法:
第二種方法:
第二種更加直觀也更容易維護,儲存節約空間。
四、命令拾遺
hkeys key 只獲取欄位
hvals key 只獲取欄位值
hlen key 獲得欄位數量