redis之雜湊型別

2021-07-12 02:33:22 字數 3178 閱讀 7734

我們知道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...