list是一個連結清單結構,主要功能是push、pop、擷取一個範圍的所有值等等,操作中key了解為連結清單的名字。
Redis的list類型其實就是一個每個子元素都是string類型的雙向連結清單。連結清單的最大長度是(2的32次方)。我們可以通過push,pop操作從連結清單的頭部或者尾部添加删除元素。這使得list既可以用作棧,也可以用作隊列。
有意思的是list的pop操作還有阻塞版本的,當我們[lr]pop一個list對象時,如果list是空,或者不存在,會立即傳回nil。但是阻塞版本的[lr]pop則可以阻塞,當然可以加逾時時間,逾時後也會傳回nil。為什麼要阻塞版本的pop呢,主要是為了避免輪詢。舉個簡單的例子如果我們用list來實作一個工作隊列。執行任務的thread可以調用阻塞版本的pop去擷取任務這樣就可以避免輪詢去檢查是否有任務存在。當任務來時候工作線程可以立即傳回,也可以避免輪詢帶來的延遲。說了這麼多,接下來看一下實際操作的方法吧:
lpush:
在key對應list的頭部添加字元串元素
<a href="http://blog.51cto.com/attachment/201312/211603186.png" target="_blank"></a>
在此處我們先插入了一個world,然後在world的頭部插入了一個hello。其中lrange是用于取mylist的内容。
rpush:
在key對應list的尾部添加字元串元素
<a href="http://blog.51cto.com/attachment/201312/211926800.png" target="_blank"></a>
在此處我們先插入了一個hello,然後在hello的尾部插入了一個world。
linsert:
在key對應list的特定位置之前或之後添加字元串元素
<a href="http://blog.51cto.com/attachment/201312/212523508.png" target="_blank"></a>
在此處我們先插入了一個hello,然後在hello的尾部插入了一個world,然後又在world的前面插入了there。
lset:
設定list中指定下标的元素值(下标從0開始)
<a href="http://blog.51cto.com/attachment/201312/212911242.png" target="_blank"></a>
在此處我們依次插入了one,two,three,然後将标是0的值設定為four,再将下标是-2的值設定為five。
lrem:
從key對應list中删除count個和value相同的元素。 count>0時,按從頭到尾的順序删除,具體如下:
<a href="http://blog.51cto.com/attachment/201312/213208707.png" target="_blank"></a>
count<0時,按從尾到頭的順序删除,具體如下:
<a href="http://blog.51cto.com/attachment/201312/213402523.png" target="_blank"></a>
count=0時,删除全部,具體如下:
<a href="http://blog.51cto.com/attachment/201312/213720201.png" target="_blank"></a>
ltrim:
保留指定key 的值範圍内的資料
<a href="http://blog.51cto.com/attachment/201312/214023494.png" target="_blank"></a>
lpop:
從list的頭部删除元素,并傳回删除元素
<a href="http://blog.51cto.com/attachment/201312/214147804.png" target="_blank"></a>
rpop:
從list的尾部删除元素,并傳回删除元素
<a href="http://blog.51cto.com/attachment/201312/214339295.png" target="_blank"></a>
rpoplpush:
從第一個list的尾部移除元素并添加到第二個list的頭部,最後傳回被移除的元素值,整個操作是原子的.如果第一個list是空或者不存在傳回nil
<a href="http://blog.51cto.com/attachment/201312/214654348.png" target="_blank"></a>
lindex:
傳回名稱為key的list中index位置的元素
<a href="http://blog.51cto.com/attachment/201312/214845480.png" target="_blank"></a>
llen:
傳回key對應list的長度
<a href="http://blog.51cto.com/attachment/201312/214934497.png" target="_blank"></a>
本文轉自shayang8851CTO部落格,原文連結:http://blog.51cto.com/janephp/1337860,如需轉載請自行聯系原作者