它的添加,刪除操作都是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實現.
這個限制可以在配置檔中指定
hash-max-zipmap-entries 64 #配置字段最多64個
hash-max-zipmap-value 512 #配置value最大為512位元組
下表為指令對應說明
指令 | 說明 |
HDEL | 刪除指定的鍵值裡面的欄位 |
HEXISTS | 檢查指定的鍵值欄位是否存在 |
HGET | 取得指定的鍵值欄位內容 |
HGETALL | 取得指定的鍵值所有欄位內容 |
HINCRBY | 指定的鍵值欄位內容遞增加一 |
HINCRBYFLOAT | 指定的鍵值欄位內容遞指定的浮點數 |
HKEYS | 取得指定鍵值的所有欄位名稱 |
HLEN | 取得指定鍵值的欄位數量 |
HMGET | 同時取得多組指定鍵值的欄位內容 |
HMSET | 同時設定多組指定鍵值的欄位內容 |
HSET | 設定指定鍵值的欄位內容 |
HSETNX | 設定指定鍵值的欄位內容 |
HVALS | 取得指定鍵值的所有欄位的內容 |
HSCAN | 查詢指定鍵值的欄位名稱 |
其他資源:
使用範例文章
沒有留言:
張貼留言