redis進階——哈希(Hash)

redis作爲最流行的高性能的key-value數據庫,筆者幾乎每個項目都會用到,不過老實說,筆者在初期只會用string類型,就是說每次都是整存整取,說實話,效率不高,不知道大家有沒有向我這樣。

不過,我知道redis有其他類型,只是因爲習慣以及懶的原因,所以長期執着於string類型,後來在空餘時間,瞭解了其他存儲方式,一看之後,瞬間就覺得自己以前太low了,今天要說的就是我redis裏面的哈希(Hash)

Redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象,如果是以前,一般是先將json轉化爲字符串,然後整存整取,效率太低,而hash可以允許操作單個字段和編程裏面的對象類型很想(其實redis 4.0之後加入了真正的json類型)

hash的命令比string類型稍微複雜一點:

HDEL key field1 field2  ...
刪除一個或多個哈希表字段


HEXISTS key field 
查看哈希表 key 中,指定的字段是否存在。


HGET key field 
獲取存儲在哈希表中指定字段的值。


HGETALL key 
獲取在哈希表中指定 key 的所有字段和值


HINCRBY key field increment 
爲哈希表 key 中的指定字段的整數值加上增量 increment 。


HINCRBYFLOAT key field increment 
爲哈希表 key 中的指定字段的浮點數值加上增量 increment 。


HKEYS key 
獲取所有哈希表中的字段


HLEN key 
獲取哈希表中字段的數量


HMGET key field1 field2 ..
獲取所有給定字段的值


HMSET key field1 value1 field2 value2 ..
同時將多個 field-value (域-值)對設置到哈希表 key 中。


HSET key field value 
將哈希表 key 中的字段 field 的值設爲 value 。


HSETNX key field value 
只有在字段 field 不存在時,設置哈希表字段的值。


HVALS key 
獲取哈希表中所有值

我用戶的命令大概就上面一些,當然強大的redis還有其他命令,大家有興趣可以百度瞭解更多

其實當時用hash的時候發現就疑問,hash和string,效率如何,爲此我專門簡單測試了一些功能,從存儲空間大小以及存取耗費時間,結果發現,如果每次存取用到大多字段或者全部字段,string要比hash快,但是如果字段較多,而大多數場景都是用到少數字段時,兩者的時間就差太多了,特別是更改單個字段時,string需要先取,再存,而hash只需要一條命令,效率差別太大,大家可以根據自己的應用場景來選擇合適的存儲方式
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章