string-----
redis的string類型是二進制安全的,也就是說redis的string類型的val可以保存任意字符嚼吞,包括二進制。所以說redis的string類型可以保存圖片或序列化對象等信息。從內(nèi)部實現(xiàn)來看监透,redis中string類型的值可以看作是一個byte數(shù)組。最大上限是1G字節(jié)航唆。
這里可以得出一個關(guān)系胀蛮,如果只看redis的string類型數(shù)據(jù)時,可以把redis看作一個有持久化特性的memcached糯钙。
hash-----
redis hash時一個string類型的field和value的映射表粪狼。hash特別適合用于存儲對象退腥。
hset myhash key val
hget myhash key
hincrby myhash key 5
hdel myhash key
hkeys myhash
hvals myhash
hgetall myhash
list----
redis的list類型其實就是一個每個子元素都是string類型的雙向鏈表。鏈表的最大長度時2的32次方再榄。我們可以用push和pop操作從鏈表的頭部或者尾部添加刪除元素阅虫。這使得redis里面的list同時具有棧和隊列的特點,既可以當作棧用又可以當作隊列使用不跟。
set----
set是string類型元素的集合颓帝,和我們數(shù)學(xué)中的集合概念很相似。對集合的操作有添加刪除元素窝革,有對多個集合求交并差等操作购城。操作中key理解為集合的名字。
sorted sets----
sorted sets是set的一個升級版本虐译,它在set的基礎(chǔ)上增加了一個順序?qū)傩浴?br>
不同的是瘪板,每個元素都會關(guān)聯(lián)一個double類型的score。sorted set的實現(xiàn)是skip list和hash table的混合體漆诽。
當元素被添加到集合中時侮攀,一個元素到score的映射被添加到hash table中,所以給定一個元素獲取score的開銷是o(1)厢拭,另一個score到元素的映射被添加到skip list兰英,并按照score排序,所以就可以有序獲取集合中的元素供鸠。添加畦贸,刪除操作開銷都是o(log(n)),和skip list的開銷一致,redis的skip list實現(xiàn)用的是雙向鏈表楞捂,這樣就可以逆序從尾部取元素薄坏,sorted set最經(jīng)常的使用方式應(yīng)該是作為索引來使用,我們可以把要排序的字段作為score存儲寨闹,對象的id當作元素來存儲胶坠。