Redis學習筆記(四)-資料類型之list類型

來源:互聯網
上載者:User

標籤:

  redis的list類型其實就是一個每個子項目都是string類型的雙向鏈表。所以[lr]push和[lr]pop命令的演算法時間複雜度都是O(1)。另外list會記錄鏈表的長度。所以llen操作也是O(1).鏈表的最大長度是(2的32次方-1)。我們可以通過push,pop操作從鏈表的頭部或者尾部添加刪除元素。這使得list既可以用作棧,也可以用作隊列。有意思的是list的pop操作還有阻塞版本的。當我們[lr]pop一個list對象是,如果list是空,或者不存在,會立即返回nil。但是阻塞版本的b[lr]pop可以則可以阻塞,當然可以加逾時時間,逾時後也會返回nil。

  為什麼要阻塞版本的pop呢,主要是為了避免輪詢。舉個簡單的例子如果我們用list來實現一個工作隊列。執行任務的thread可以調用阻塞版本的pop去擷取任務這樣就可以避免輪詢去檢查是否有任務存在。當任務來時候背景工作執行緒可以立即返回,也可以避免輪詢帶來的延遲。

  list相關命令:

  lpush key string 在key對應list的頭部添加字串元素,返回1表示成功,0表示key存在且不是list類型

  rpop key 從list的尾部刪除元素,並返回刪除元素。如果key對應list不存在或者是空返回nil,如果key對應值不是list返回錯誤

  llen key 返回key對應list的長度,key不存在返回0,如果key對應類型不是list返回錯誤

  

  rpush key string 在key對應list的尾部添加字串元素,返回1表示成功,0表示key存在且不是list類型

  lpop key 從list的頭部刪除元素,並返回刪除元素。如果key對應list不存在或者是空返回nil,如果key對應值不是list返回錯誤

  

  lrange key start end 返回指定區間內的元素,下標從0開始,負值表示從後面計算,-1表示倒數第一個元素,key不存在返回空列表

  ltrim key start end 截取list,保留指定區間內元素,成功返回1,key不存在返回錯誤

  

  lset key index value 設定list中指定下標的元素值,成功返回OK,key或者下標不存在返回錯誤

  

  lrem key count value 從key對應list中刪除count個和value相同的元素。

  

  blpop key1...keyN timeout 從左至右掃描返回對第一個非空list進行lpop操作並返回,比如blpop list1 list2 list3 0 ,如果list不存在,list2,list3都是非空則對list2做lpop並返回從list2中刪除的元素。

  

  如果所有的list都是空或不存在,則會阻塞timeout秒,timeout為0表示一直阻塞。當阻塞時,如果有client對key1...keyN中的任意key進行push操作,則第一在這個key上被阻塞的client會立即返回。如果逾時發生,則返回nil。有點像unix的select或者poll。

  

  

  

  brpopblpop不再贅述,一個是從頭部刪除一個是從尾部刪除。

    rpoplpush srckey destkey 從srckey對應list的尾部移除元素並添加到destkey對應list的頭部,最後返回被移除的元素值,整個操作是原子的.如果srckey是空或者不存在返回nil。

    

Redis學習筆記(四)-資料類型之list類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.