第1篇:http://www.javashuo.com/article/p-vsodremk-dt.htmlhtml
第2篇 String:http://www.javashuo.com/article/p-kjwucdnc-hs.htmlspa
第3篇 Hash:http://www.javashuo.com/article/p-awwjuogt-ep.html3d
本文介紹Redis的List和SET,可能比較無聊,大多內容來自文檔。htm
Redis的List是經過Linked List(鏈表)來實現的String集合,因此插入數據的速度很快。blog
可是缺點就是在數據量比較大的時候,訪問某個數據的時間可能會很長,但針對這種狀況,可使用Sorted Set,這個一會再說。索引
下面看命令文檔
LPUSH會向List的左側(頭部)添加一個新的元素,而RPUSH會把新的元素添加到List的右側(尾部)。get
LRANGE命令能夠按索引區間顯示List的一部分,它的個試試LRANGE List-Key start end。若是想顯示整個list的話,這兩個索引就能夠是0和-1,其中-1就表示最後一個元素。io
LPUSH和RPUSH,能夠一次添加多個元素:List
POP動做有兩個效果:一個是獲取到元素,另外一個是把元素從list中刪除。
LPOP就是從左邊(頭部)POP,RPOP就是從右邊(尾部)POP。
而若是list裏面已經沒有元素了,這時執行pop就會返回null:
LTRIM命令能夠對list進行剪切,其格式爲LTRIM list-key start end,返回的就是剪切的部分:
BRPOP和BLPOP這兩個命令與RPOP和LPOP相似,可是當list裏沒有元素的時候,它們能夠幾秒鐘,若是這期間有新的元素添加到了list裏,那麼就會中止等待返回該元素,不然就會一直等到設定的時間結束,而後返回null:
例子裏面的5 就是等待5秒。
而若是這個參數改成0,那就是永遠等待:
而當一旦有新的元素加入的時候,該命令就會當即返回元素:
此外您還應該研究一下RPOPLPUSH和BRPOPLPUSH這兩個命令。
經過Redis的命令咱們能夠發現,
當咱們爲集合添加元素的時候,若是集合的key不存在,那麼Redis會爲咱們建立一個空的集合,而後再執行插入操做:
但要注意的是,不能夠爲不一樣類型且key已經存在的集合添加新的數據:
而從集合刪除數據的時候,若是集合是空的,那麼集合的Key就會自動銷燬(Stream類型除外):
而針對只讀命令(例如LLEN,返回list的長度)也具備一樣的效果:
結果:
結果:
結果:
這個說來話長,暫不演示。
Redis的SET是無序的String集合,它裏面的元素是不會重複的。
SADD命令會添加新元素到SET:
能夠看到一次性能夠添加一個或多個元素。
SMEMBERS能夠獲取set裏全部的元素:
可是每次調用獲得結果的順序是沒法保證的。
SISMEMBER能夠判斷某個元素是否在set裏:
返回1表示true,0表示false。
SINTER能夠查看多個set之間的交集:
SPOP能夠隨機從set中移除一個或多個元素並返回:
把多個set合併到一個set裏可使用SUNIONSTORE,格式是sunionstore 目標set set1 set2 ...:
若是隻有一個set須要合併的話,那麼就至關因而複製:
SCARD能夠獲取set的大小:
SRANDMEMBER能夠隨機獲取set裏面的元素,可是不會移除它們:
結果:
結果:
結果:
結果:
結果:
結果:
結果: