介紹
redis的散列類型不能嵌套其他數據類型,它存儲了字段和字段值的映射,是一種字典結構,但是字段值只能是字符串String。
散列類型適合存儲對象:使用對象類別和ID構成鍵名,用字段表示對象的屬性,字段值存儲屬性值。
運用場景
例如我們需要在mysql中存一張汽車資料表
ID | color | name | price |
---|---|---|---|
1 | 黑色 | 寶馬 | 50萬 |
2 | 白色 | 奧迪 | 100萬 |
3 | 藍色 | 奔馳 | 200萬 |
如果此時業務需要爲寶馬牌子的車增加生產日期
ID | color | name | price | date |
---|---|---|---|---|
1 | 黑色 | 寶馬 | 50萬 | 2019-11-01 |
2 | 白色 | 奧迪 | 100萬 | |
3 | 藍色 | 奔馳 | 200萬 |
從表中可以看出ID爲2,3的兩條記錄不需要這個date屬性。
在現實業務中經常會出現這種同一張表不同記錄需要維護不同屬性的場景,久而久之表中的冗餘字段就會越來越多。
redis的散列類型就不存在這個問題
使用hash類型存儲對象
1.hset/hget 設置/獲取單個字段屬性的值
2.hmset/hmget 設置/獲取多個屬性值
3.hgetall key
可以返回對象的所有字段和屬性值
返回的是字段和字段值組成的列表,不是很直觀,但是在業務中可以將返回的結果封裝成對象處理
4.hexists key field
用來判斷一個字段是否存在。如果存在返回1,否則返回0
5.hsetnx key field value
當字段不存在時賦值
hsetnx和hset命令類似,區別在於如果字段已經存在,hsetnx將不執行任何操作。
6.刪除字段
hdel key field
可以刪除一個或多個字段,返回值是被刪除的字段個數
7.只獲取字段名和只獲取字段值
hkeys key
hvals key
8.獲取字段數量
hlen key