lists類型及操作
list是一個(gè)鏈表結(jié)構(gòu),主要功能是push、pop、獲取一個(gè)范圍的所有值等等,操作中key理解為鏈表的名字。
redis的list類型其實(shí)就是一個(gè)每個(gè)子元素都是string類型的雙向鏈表。鏈表的最大長(zhǎng)度是(2的32次方)。我們可以通過(guò)push,pop操作從鏈表的頭部或者尾部添加刪除元素。這使得list既可以用作棧,也可以用作隊(duì)列。
有意思的是list的pop操作還有阻塞版本的,當(dāng)我們[lr]pop一個(gè)list對(duì)象時(shí),如果list是空,或者不存在,會(huì)立即返回nil。但是阻塞版本的b[lr]pop可以則可以阻塞,當(dāng)然可以加超時(shí)時(shí)間,超時(shí)后也會(huì)返回nil。為什么要阻塞版本的pop呢,主要是為了避免輪詢。舉個(gè)簡(jiǎn)單的例子如果我們用list來(lái)實(shí)現(xiàn)一個(gè)工作隊(duì)列。執(zhí)行任務(wù)的thread可以調(diào)用阻塞版本的pop去獲取任務(wù)這樣就可以避免輪詢?nèi)z查是否有任務(wù)存在。當(dāng)任務(wù)來(lái)時(shí)候工作線程可以立即返回,也可以避免輪詢帶來(lái)的延遲。
海珠ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
lpush
在key對(duì)應(yīng)list的頭部添加字符串元素
如:lpush mylist “aaa” “bbb”
rpush
在key對(duì)應(yīng)list的尾部添加字符串元素
linsert
在key對(duì)應(yīng)list的特定位置之前或之后添加字符串元素
如:linsert mylist3 before "world" "there"
lset
設(shè)置list中指定下標(biāo)的元素值(下標(biāo)從0開(kāi)始)
如:lset mylist4 0 "four"
lrem
從key對(duì)應(yīng)list中刪除count個(gè)和value相同的元素。
count>0時(shí),按從頭到尾的順序刪除;
count<0時(shí),按從尾到頭的順序刪除;
count=0時(shí),刪除全部
如:lrem mylist5 2 "hello"
ltrim
保留指定key 的值范圍內(nèi)的數(shù)據(jù)
如:ltrim mylist8 1 -1
lpop
從list的頭部刪除元素,并返回刪除元素
如:lpop mylist
rpop
從list的尾部刪除元素,并返回刪除元素
rpoplpush
從第一個(gè)list的尾部移除元素并添加到第二個(gè)list的頭部,最后返回被移除的元素值,整個(gè)操作是原子的.如果第一個(gè)list是空或者不存在返回nil.
如:rpoplpush mylist5 mylist6
lindex
返回名稱為key的list中index位置的元素
llen
返回key對(duì)應(yīng)list的長(zhǎng)度