哈希,也叫字典、map、關聯數組。
在redis中,哈希類型,是指鍵值本身,又是一個鍵值對結構。
哈希類型的映射關係叫做 field-value。
命令
- 設置值
hset key field value
- 獲取值
hget key field
- 刪除field
hdel key field [field ...]
- 計算field的個數
hlen key
- 批量設置或獲取 field-value
hmset key field value [field value ...]
hmget key field [field ...]
- 判斷field是否存在
hexists key field
- 獲取所有field
hkeys key
- 獲取所有value
hvals key
- 獲取所有的 field-value
hgetall key
如果哈希元素個數較多,會存在阻塞redis的可能。
內部編碼
- ziplist (壓縮列表) 節省內存,適用於小數據量的 ,field個數小於512個,value小於64字節
- hashtable (哈希表)
使用場景
哈希類型和關係型數據庫有兩點不同:
- 哈希類型是稀疏的。
- 關係型數據庫可以做複製的關係查詢。
緩存用戶信息方案
原生字符串類型:每個屬性一個鍵。
set user:1:name tom
set user:1:age 12
set user:1:city beijing
序列化字符串類型:將用戶信息序列化後用一個鍵保存。
set user:1 serialize (userInfo)
哈希類型:每個用戶屬性使用一對field-value,但是隻用一個鍵保存。
hmset user:1 name tom age 12 city beijing