我們知道redis是採用字典結構以鍵值對的形式儲存資料,而雜湊型別的鍵值也是一種字典結構,其儲存了字段和字段值的對映,但是字段值必須是字串,不支援其它資料型別,換句話說,雜湊型別不能巢狀其他資料型別。同時除了雜湊型別,redis的其它資料型別同樣不支援資料型別巢狀。集合型別的每個元素都只能是字串,不能是另乙個集合或雜湊表等。
雜湊型別適合儲存物件:使用物件類別和id構成鍵名,使用字段表示屬性,字段值儲存屬性值。
鍵 字段 字段值
color 白色
car:2 name 奧迪
price 90萬
1.賦值與取值
hset key field value
hget key field
hmset key field value [field value ...]
hmget key field [field ...]
hgetall key
下面簡單的賦值
.0.1:6379> hset car price 500
(integer) 1
127.0
.0.1:6379> hset car name bmw
(integer) 0
127.0
.0.1:6379> hget car name
"bmw"
hset這個命令這裡是不區分插入和更新操作.當我們執行的是插入操作的時候hset命令會返回1,當執行的是更新操作的時候hset會返回0。如果鍵不存在是,hset命令會自動建立它。
這裡要區分hset和set,hset前面有個h代表的是hash也就是雜湊,set是只針對字串來操作,這裡我們不能互相使用其它的命令。
我也可以使用hmset命令一次性寫多個操作
127.0
.0.1:6379> hmset car:1 price 4000 name ferry color 紅
ok127.0
.0.1:6379> hmget car:1 price name color
1) "4000"
2) "ferry"
3) "\xe7\xba\xa2"
127.0
.0.1:6379> hgetall car:1
1) "price"
2) "4000"
3) "name"
4) "ferry"
5) "color"
6) "\xe7\xba\xa2"
2.判斷字段是否存在
hexists key field
存在返回1,不存在返回0。
127.0
.0.1
:6379> hexists
carkind
(integer) 0
127.0
.0.1
:6379> hset
carkind
yueye
(integer) 1
127.0
.0.1
:6379> hexists
carkind
(integer) 1
3.當字段不存在時賦值
hsetnx key field value
當欄位存在的時候不會做事如果不存在會給字段賦值。
127.0
.0.1
:6379> hexists
carwidth
(integer) 0
127.0
.0.1
:6379> hsetnx
carwidth 50
(integer) 1
127.0
.0.1
:6379> hexists
carwidth
(integer) 1
4.增加數字
hincrby key field increment
在字串中incr是字串型別的自增這裡是雜湊型別的增加。
127.0
.0.1
:6379> hincrby
book
price 100
(integer) 100
127.0
.0.1
:6379> hincrby
book
price 100
(integer) 200
5.刪除字段
hdel key field [field ...]
返回的是所刪除的條數
127.0
.0.1
:6379> hdel
book
price
(integer) 1
127.0
.0.1
:6379> hdel
book
price
(integer) 0
我們可以利用雜湊儲存什麼值?
我覺得儲存乙個東西的所有屬性是比較符合的,在雜湊中儲存某種東西的所有屬性資料更加直觀,也更容易維護。
1.只獲取欄位名或字段值
hkeys key
hvals key
可以看看下面的例子:
127.0.0.1:6379> hkeys car
1) "name"
2) "model"
3) "price"
4) "kind"
5) "width"
127.0.0.1:6379> hvals car
1) "bmw"
2) "c200"
3) "500"
4) "yueye"
5) "50"
2.獲取鍵中字段的數量:
hlen key
127.0
.0.1:6379> hlen car
(integer) 5
redis之雜湊型別(hash)
redis的雜湊值是字串欄位和字串值之間的對映,所以他們是表示物件的完美資料型別。在redis中的雜湊值,可儲存超過400十億鍵值對。假如我有乙個表示 職工 的物件,他可以有如下屬性 看看是如何將物件儲存到redis中的 hmset zhibin name binbin age 26 positio...
Redis 資料型別之雜湊型別
營口小書生 2017 05 11 15 26 redis 有很多種型別,現在我們不用想太多,看此篇文章,你只需要記得你 雜湊型別 就好 雜湊型別顧名思義就是字段分開儲存的,可以自由更改值,不需要先讀取整篇內容在更改其中乙個 然後在儲存更新原有的,這樣是不是很簡單啊,還能保證資料的一致性,不用擔心改錯...
Redis資料型別之雜湊型別 Redis系列三
1 賦值與取值 hset key field value 給字段賦值 hget key field 獲取字段值 hmset key field value field value 集體賦值 hmget key field field.集體取值 hgetall key 全部取出 2 判斷字段存在 he...