十二、Redis五大資料型別之四Hash
hash型別
1.hash型別資料的基本操作
新增 / 修改資料:hset key field value
獲取資料:hget key field
|hgetall key
刪除資料:hdel key field field1
新增 / 修改多個數據:hmset key field value field1 value1
獲取多個數據:hmget key field field1
獲取表中欄位數量:hlen key
獲取表中是否存在某個欄位:hexists key field
2. hash型別資料的擴充套件操作
獲取hash表中所有的欄位值:hkeys key
獲取hash表中所有的欄位值:hvals key
設定指定欄位的數值增加指定範圍的值:hincrby key field increment
|hincrbyfloat key field increment
3. hash業務場景之購物車
此圖來源於網路非自制,只是模擬購物車場景
在上圖中,我們可以看到購物車裡的資訊,下來咱們使用redis來對這個購物車的實現。
4.hash型別的操作配置
Map集合,key-map時這個值是一個map集合! 本質和String型別沒有太大區別,還是一個簡單的key-vlaue!
hash變更的資料 user name age,尤其是是使用者資訊之類的,經常變動的資訊! hash 更適合於物件的儲存,String更加適合字串儲存!
##########################################################################
127.0.0.1:6379> hset myhash field1 sj # set一個具體 key-value
127.0.0.1:6379> hget myhash field1 # 獲取一個欄位值
127.0.0.1:6379> hmset myhash field1 hello field2 world # set多個 key-vlaue
127.0.0.1:6379> hmget myhash field1 field2 # 獲取多個欄位值
127.0.0.1:6379> hgetall myhash # 獲取全部的資料
127.0.0.1:6379> hdel myhash field1 # 刪除hash指定key欄位!對應的value值也就消失了!
127.0.0.1:6379> hgetall myhash
##########################################################################
hlen127.0.0.1:6379> flushdb
127.0.0.1:6379> hmset myhash field1 hello field2 world
127.0.0.1:6379> HGETALL myhash
127.0.0.1:6379> hlen myhash # 獲取hash表的欄位數量!
##########################################################################
127.0.0.1:6379> HEXISTS myhash field1 # 判斷hash中指定欄位是否存在!
127.0.0.1:6379> HEXISTS myhash field3
##########################################################################
# 只獲得所有field
# 只獲得所有value
127.0.0.1:6379> hkeys myhash # 只獲得所有field127.0.0.1:6379> hvals myhash # 只獲得所有value
##########################################################################
incr decr
127.0.0.1:6379> hset myhash field3 5 #指定增量!
127.0.0.1:6379> HINCRBY myhash field3 1
127.0.0.1:6379> HINCRBY myhash field3 -1
127.0.0.1:6379> hsetnx myhash field4 hello # 如果不存在則可以設定
127.0.0.1:6379> hsetnx myhash field4 world # 如果存在則不能設定