Redis hash是一個string類型的 field和value的映射表.它的添加、刪除操做都是O(1)(平均)。hash特別適合用於存儲對象。相較於將對象的每一個字段存成單個string 類型。將一個對象存儲在hash類型中會佔用更少的內存,而且能夠更方便的存取整個對象。省內存的緣由是新建一個hash對象時開始是用zipmap(又 稱爲small hash)來存儲的。這個zipmap其實並非hash table,可是zipmap相比正常的hash實現能夠節省很多hash自己須要的一些元數據存儲開銷。儘管zipmap的添加,刪除,查找都是 O(n),可是因爲通常對象的field數量都不太多。因此使用zipmap也是很快的,也就是說添加刪除平均仍是O(1)。若是field或者 value的大小超出必定限制後,Redis會在內部自動將zipmap替換成正常的hash實現. 這個限制能夠在配置文件中指定html
hash-max-zipmap-entries 64 #配置字段最多64個。htm
hash-max-zipmap-value 512 #配置value最大爲512字節。對象
1. hset
HSET key field value
將哈希表key中的域field的值設爲value。若是key不存在,一個新的哈希表被建立並進行hset操做。若是域field已經存在於哈希表中,舊值將被覆蓋。
2. hget
HGET key field
返回哈希表key中指定的field的值。
3. hsetnx
HSETNX key field value
將哈希表key中的域field的值設置爲value,當且僅當域field不存在。若域field已經存在,該操做無效。若是key不存在,一個新哈希表被建立並執行hsetnx命令。
4. hmset
HMSET key field value [field value ...]
同時將多個field - value(域-值)對設置到哈希表key中。此命令會覆蓋哈希表中已存在的域。若是key不存在,一個空哈希表被建立並執行hmset操做。
5. hmget
HMGET key field [field ...]
返回哈希表key中,一個或多個給定域的值。若是給定的域不存在於哈希表,那麼返回一個nil值。由於不存在的key被看成一個空哈希表來處理,因此對一個不存在的key進行hmget操做將返回一個只帶有nil值的表。
6. hgetall
HGETALL key
返回哈希表key中,全部的域和值。在返回值裏,緊跟每一個域名(field name)以後是域的值(value),因此返回值的長度是哈希表大小的兩倍。
7. hdel
HDEL key field [field ...]
刪除哈希表key中的一個或多個指定域,不存在的域將被忽略。
8. hlen
HLEN key
返回哈希表key對應的field的數量。
9. hexists
HEXISTS key field
查看哈希表key中,給定域field是否存在。
10. hkeys
HKEYS key
得到哈希表中key對應的全部field。
11. hvals
HVALS key
得到哈希表中key對應的全部values。
12. hincrby
爲哈希表key中的域field的值加上增量increment。增量也能夠爲負數,至關於對給定域進行減法操做。若是key不存在,一個新的哈希表被建立並執行hincrby命令。若是域field不存在,那麼在執行命令前,域的值被初始化爲0。對一個儲存字符串值的域field執行hincrby命令將形成一個錯誤。本操做的值限制在64位(bit)有符號數字表示以內。ip