2015年3月19日 星期四

Redis筆記-數據類型-Hash

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實現.

這個限制可以在配置檔中指定
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查詢指定鍵值的欄位名稱

其他資源:
使用範例文章

沒有留言:

張貼留言