Redis 是採用字典結構以鍵值對的形式存儲數據的,而散列類型(hash)的鍵值也是一種字典結構,存儲了字段和字段值的映射,但字段值只能是字符串,不支持其餘數據類型。redis
PS:除了散列類型,Redis的其餘數據類型一樣不支持數據類型嵌套。好比集合類型的每一個元素都只能是字符串,不能是另外一個集合或散列表等。code
散列類型適合存儲對象:使用對象類別和ID構成鍵名,使用字段表示對象的屬性,而字段值則存儲屬性值。
根據下面的命令,很容易理解。對象
1.賦值與取值rem
HSET key field value HGET key field HMSET key field value [field value ...] HMGET key field [field ...] HGATALL key
HSET 命令用來給字段賦值,HGET 命令用來得到字段的值。字符串
redis> HSET car price 500 (integer) 1 redis> HSET car name BMW (integer) 1 redis> HGET car name "BMW" PS:HSET 命令不區分插入和更新操做,當執行插入操做(即以前字段不存在)HSET 命令會返回 1,當執行更新操做(即之 前字段已經存在)HSET 命令會返回 0。更進一步,當鍵自己不存在時,HSET命令還會自動創建它。
當須要同時設置多個字段的值時,可使用 HMSET 命令。hash
HMSET key field1 value1 field2 value2
相應的,HMSET 命令能夠同時得到多個字段的值:model
redis> HMSET car price name 1) "500" 2) "BMW"
若是想要獲取鍵中全部字段和字段值殊不知道鍵中有哪些字段時,應該使用 HGETALL 命令。數據類型
redis> HGETALL car 1) "price" 2) "500" 3) "name" 4) "BMW"
2.判斷字段是否存在數據
HEXISTS key field
HEXISTS 命令用來判斷一個字段是否存在,存在返回 1,反則返回 0(鍵不存在也會返回 0)集合
redis> HEXISTS car model (integer) 0 redis> HSET car model C200 (integer) 1 redis> HEXISTS car model (integer) 1
3.當字段不存在時賦值
HSETTNX key field value
若是字段已經存在,HSETTNX 命令將不執行任何操做。HSETTNX 命令是原子操做,沒必要擔憂競態條件。
4.增長數字
HINCRBY key field increment
使字段值增長指定的整數。
redis> HINCRBY person score 60 (integer) 60
5.刪除字段
HDEL key field [field ...]
HDEL 命令能夠刪除一個或者多個字段,返回值是被刪除的字段的個數。
redis> HDEL car price (integer) 1 redis> HDEL car price (integer) 0
6.只獲取字段名或字段值
HKEYS key HVALS key
HKEYS 命令用來獲取鍵中全部的字段名稱
redis> HKEYS car 1) "name" 2) "model"
HVALS 命令用來得到鍵中全部字段值。
redis> HVALS car 1) "BMW" 2) "C200"
7.得到字段數量
HLEN key redis> HLEN car (integer) 2