簡介
常用命令:hget;hset;hgetall等
我們可以將Redis中的Hashes類型看成具有String Key和String Value的map容器。所以該類型非常適合於儲存值對象的資訊。如Username、Password和Age等。如果Hash中包含很少的欄位,那麼該類型的資料也將僅佔用很少的磁碟空間。每一個Hash可以儲存4294967295個索引值對。
應用情境
同樣是緩衝,在Memcached中,我們經常將一些結構化的資訊打包成HashMap,在用戶端序列化後儲存為一個字串的值,比如使用者的暱稱、年齡、性別、積分等,這時候在需要修改其中某一項時,通常需要將所有值取出還原序列化後,修改某一項的值,再序列化儲存回去。這樣不僅增大了開銷,也不適用於一些可能並行作業的場合(比如兩個並發的操作都需要修改積分)。而Redis的Hash結構可以使你像在資料庫中Update一個屬性一樣只修改某一項屬性值。
執行個體介紹
key value
userID username;age;birthday
普通儲存方式:
第一種:key:userID; value:username;age;birthday
第二種:key:userID+name value:name
key:userID+age value:age
key:userID+birthday value:birthday;
第一種缺點:當需要修改其中某一項,如生日時,需要把整個對象取出來,更新值之後,再放進去。同時在修改時還要保護並發,避免產生髒資料等;
第二種缺點:使用者ID一直在重複的儲存,浪費記憶體;
如果用redis的hash類型,會是這樣存放的,如下圖:
key依舊是userID,但是value值卻是一個map,map中依舊存在key和value;key是姓名標籤,對應的value是具體的姓名;如果需要修改姓名值時,只加用userID+field(姓名)就可以修改姓名值了。這樣操作不需要重複儲存資料,也不需要想第一種那樣擔心,取出來之後,有並行作業。 相關命令列表
這裡只介紹常用的幾個
(這裡關於redis的每一篇文章,都是初稿,因為小編還在研究中,會不斷更新的)