1. 程式人生 > >Redis研究(四)—雜湊型別

Redis研究(四)—雜湊型別

雜湊型別(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 獲得欄位數量