1. 程式人生 > >Redis的散列類型

Redis的散列類型

wid 命令 edi 類型 class 散列 沒有 白色 存儲對象

  Redis是采用字典結構以key-value的形式存儲數據的,在散列類型(所謂的hash)中的value也是一種字典結構。如果用關系表結構去理解,就是key為對象,value是屬性和屬性值。如下圖:

技術分享圖片

所以使用散列(hash)類型,可以很方便的存儲對象,值得註意的是,字段屬性的值只能是字符串類型。

  對於一個傳統的關系數據表,如下圖:

ID color name price model
1 白色  梅賽德斯 98萬 S級
2 黑色 奧迪 90萬
3 紅色 凱迪拉克 80萬

如果想在關系數據表為某一條記錄單獨添加屬性,這是做不到的,只能夠同時給其他記錄也添加屬性,如給ID為1的記錄添加model屬性,其他記錄也具有了model屬性,只是沒有值,這裏會出現問題,當記錄數據非常多的時候,其他不需要model屬性的記錄就會出現屬性冗余。同時,為一條記錄去修改表的結構,也是一件非常不友好的行為。那麽,使用redis的散列(hash)類型就可以完美解決這個問題,它可以自由地為任何鍵增減字段而不影響其他鍵。

命令:賦值與取值

HSET key field value

redis> HSET car:1 price 98000
(integer) 1
redis> HSET car:1 name BMW
(integer) 1

HGET key field

redis> HGET car:1 name
"BMW"

HMSET key field1 value1 [field2 value2 ...]

redis> HMSET car:2 price 90000 name Audi

HMGET key field1 [field2 ...]

redis> HMGET car:2 price name
1) "90000"
2) "Audi"

HGETALL key

redis> HGETALL car:2
1) "price"
2) "90000"
3) "name"
4) "Audi"

  HSET的命令對於同一鍵名,不區分插入和更新操作,這意味著修改數據的時候不需要事先判斷字段是否已經存在來決定是執行插入數據,還是更新數據。當執行插入操作,返回1,當執行更新操作,返回0。當鍵不存在時,HSET會自動創建,這個跟SET命令一樣。

Redis的散列類型