標籤:redis 散列類型 hash
散列類型(hash)的鍵值也是一種字典結構,其儲存了欄位(field)和欄位值的映射,但欄位值只能是字串,不支援其他資料類型。
散列類型不能嵌套其他的資料類型。一個散列類型鍵可以包含至多2^32-1個欄位。
一、介紹
散列類型適合儲存物件:使用物件類別和ID構成鍵名,使用欄位表示對象的屬性,而欄位值則儲存屬性值。
如果要關係資料中儲存汽車對象:
資料是以二維表的形式儲存的,這就要求所有的記錄都有同樣的屬性,無法單獨為某條記錄增減屬性。如果想要為ID為1的汽車增加生產日期屬性,就需要把資料表更改為
ID為2和3的兩條記錄來說data欄位是冗餘的。資料量多難以維護。
但是,Redis就可以自由的為任何鍵增減欄位而不影響其他鍵。
二、命令
1.賦值與取值
hset key field valuehget key fieldhmset 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 獲得欄位數量
Redis研究(四)—散列類型