redis使用場景之hash(一)

在講hash使用場景之前,我們先來認識一下它是什麼,具有什麼結構、怎麼使用、以及在使用的時候有哪些注意事項

hash介紹

  • 對一系列存儲的數據進行編組,方便管理,典型應用存儲對象信息。string類型也可以實現存對象,對這個對象進行json序列化,然後取的時候再進行反序列化,但是,每次修改的時候只能整體修改,不能單個修改某個屬性,且必須有實體類型的支撐。序列化和反序列化也需要消耗服務器性能。
  • 一個存儲空間保存多個健值對數據。
  • 底層使用哈希表結構實現數據存儲。

哈希存儲結構優化

  • 如果field數量較少,存儲結構優化爲類型數組結構
  • 如果field數量較多,存儲結構使用HashMap結構

基本操作

添加/修改數據

hset key field value

添加修改多個數據

hmset key field1 value1 field2 value2 ...

獲取哈希表中字段的數量

hlen key

獲取哈希表中是否存在指定的字段

hexists key field

獲取數據

hget key field

hgetall key

獲取多個數據

hmget key field1 field2 ...

刪除數據

hdel key field1 [field2]

獲取哈希表中所有的字段名或字段值

hkeys key
hvals key

設置指定字段的數值數據增加指定範圍的值

hincrby key field increment
hincrbyfloat key field increment

注意事項

  • hash類型下的value只能存儲字符串,不允許存儲其他數據類型,不存在嵌套現象,如果數據未取到,則返回 nil
  • 每個hash可以存儲2^32-1個鍵值對
  • hash類型非常貼近對象的數據存儲形式,並且可以靈活添加、刪除對象屬性。但hash設計初衷不是爲了存儲大量對象而設計的,切記不可亂用,更不可以將hash作爲對象列表使用。
  • hgetall操作可以獲取全部屬性,如果內部field過多,遍歷整體數據效率就會很低,有可能成爲數據訪問瓶頸。

 

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