分享java帶來的快樂

          我喜歡java新東西

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(8)

          文章分類

          文章檔案

          相冊

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          Redis命令——Lists相關

          本文介紹Redis中與Lists相關的命令,內容主要來源于Redis的官方網站,如有需要請查看:http://redis.io/commands#list



          1.BLPOP
          語法:BLPOP key [key ...]
          timeout
          說明:該操作的時間復雜度為O(1)。BLPOP是一個阻塞形式的列表POP操作原語。它是LPOP命令的阻塞版本,因為在指定的列表中如果沒有元素來彈出,該命令將會阻塞連接。當存儲在key上的列表非空時,POP操作將會從列表的首部彈出一個元素。
          非阻塞行為:
          當調用BLPOP時,如果在指定的keys中至少有一個存儲有非空的列表,那么將會從該列表的首部彈出一個元素,并且返回給用戶該key和相應的值。在執行操作時將會按照給定的順序檢查指定的keys。假如存在三個keys,分別為list1、list2和list3,list1相應的列表實際上并不存在,而list2和list3上存儲有非空的列表。如以下命令:
          BLPOP
          list1 list2
          list3
          BLPOP將會確保從list2的首部返回一個元素。
          阻塞行為:
          如果在指定的keys中沒有一個包含非空的列表,那么BLPOP將會阻塞連接,直到另外一個客戶端對其中的一個列表執行了一個LPUSH或者RPUSH操作。
          一旦新的數據出現在列表中,客戶端將會返回接觸阻塞的key的名稱和彈出的值。當BLPOP命令引起一個客戶端阻塞并且用戶指定了非零的超期時間時,客戶端在超過超期時間后將會解除阻塞并且返回一個nil值。timeout參數被解析為一個整型值。一個為0的超期時間用于表示無限期阻塞。
          多個客戶端阻塞在相同的keys上
          多個客戶端能夠阻塞在相同的key上。它們將會被放入一個隊列,并且會按照先來先服務的原則來執行操作。
          位于MULTI/EXEC事務中的BLPOP命令
          BLPOP可以與管道線(pipelining)結合使用,但是卻不適應應用在MULTI/EXEC塊中使用BLPOP命令。這將會阻塞整個服務器以便能夠原子性地執行該塊,在這種情況下另外的客戶端無法執行push操作。位于MULTI/EXEC塊中的BLPOP的行為是返回一個nil響應。就像超出超時時間的情況一樣。
          返回值:如果沒有元素可以彈出并且超出超時時間,那么返回值為nil;在正常情況下將會返回由兩個元素組成的塊,其中第一個元素為指定的key,第二個元素為彈出的值。
          該命令自1.3.1版本后可用。

          2.BRPOP
          語法:BRPOP
          key [key ...]
          timeout
          說明:該操作的時間復雜度為O(1)。BRPOP是一個阻塞形式的列表彈出原語。它是RPOP命令的阻塞版本,因為在指定的列表中如果沒有元素存在,那么它將會阻塞連接。操作將會按照指定的順序檢查列表,并從第一個非空列表的尾部彈出一個元素。BRPOP操作大致與BLPOP元素相同,但是BRPOP命令從列表的尾部彈出元素。
          返回值:如果沒有元素彈出并且超時,那么返回值為nil;在正常情況下將會返回由兩個元素組成的塊,其中第一個元素為指定的key,而第二個元素為彈出的值。
          該命令自1.3.1版本后可用。



          3.BRPOPLPUSH
          語法:BRPOPLPUSH source destination
          timeout
          說明:該操作的時間復雜度為O(1)。BRPOPLPUSH命令式RPOPLPUSH操作的阻塞版本。當source包含元素時,命令的行為同RPOPLPUSH命令一致。當source為空時,Redis將會阻塞連接,直到另外一個客戶端對source執行了一個push操作或者超出超時時間。一個為零的超時時間將會無限期阻塞。
          返回值:在正常情況下會返回從source彈出并且壓入destination中的元素。如果超出超期時間,將會返回一個null響應。
          該命令自2.1.7版本后可用。

          4.LINDEX
          語法:LINDEX
          key
          index
          說明:該操作的時間復雜度為O(N),此處N是為得到位于index處得元素將要遍歷的元素的個數。如果是得到列表中第一個或者最后一個元素,那么時間復雜度為O(1)。
          該操作將會返回存儲在key上的列表中位于index處得元素。index的值從0開始,因此0意味著首元素,1表示列表中的第二個元素。如果index值為負,那么將會從列表的尾部進行遍歷。此處,-1代表最后一個元素,-2代表倒數第二個元素,以此類推。當存儲在key上的值不是列表時,將會返回錯誤。
          返回值:返回請求的元素,如果index超出范圍,那么返回值將為nil。
          該命令自0.07版本后可用。

          5.LINSERT
          語法:LINSERT
          key BEFORE|AFTER pivot
          value
          說明:該操作的時間復雜度為O(N),此處N為在找到樞軸pivot前需要遍歷的元素個數。這意味著將元素插入到列表左端的時間復雜度可以認為為O(1);而插入右端的時間復雜度為O(N)。插入存儲在key上的列表的值可以位于pivot的左側或者右側。如果指定的key不存在時,那么它將會被認作一個空列表,并不執行任何操作。如果指定的key存在,但是所持有的值不是列表時,將會返回一個錯誤。
          返回值:該操作將會返回插入操作完成后的列表的長度,如果樞軸沒有找到,那么將會返回-1。
          該命令自2.1.1版本后可用。

          6.LLEN
          語法:LLEN
          key
          說明:該操作的時間復雜度為O(1)。返回存儲在key上的列表的長度。如果key不存在,那么將會被認作一個空列表,并且返回者為0。如果存儲在key上的值不是列表,那么將會返回一個錯誤。
          返回值:存儲在key上的列表的長度。
          該命令自0.07版本后可用。

          7.LPOP
          語法:LPOP
          key
          說明:該操作的時間復雜度為O(1)。移除并返回存儲在key上的列表的首元素。
          返回值:列表的首元素,如果指定的key不存在,那么返回值為nil。
          該命令自0.07版本后可用。

          8.LPUSH
          語法:LPUSH
          key
          value
          說明:該操作的時間復雜度為O(1)。在存儲在key上的列表的首部插入一個元素。如果指定的key不存在,那么該命令在正式執行前將會創建一個空列表。如果key對應的值不是列表類型,那么將會返回一個錯誤。
          返回值:返回插入操作完成后列表的長度。
          該命令自0.07版本后可用。

          9.LPUSHX
          語法:LPUSHX
          key
          value
          說明:該操作的時間復雜度為O(1)。如果指定的key存在,并且對應的值為列表類型時,那么在該列表的首部插入一個元素。與LPUSH相反,如果key不存在,那么將不會進行任何操作。
          返回值:操作執行完成后列表的長度。
          該命令自2.1.1版本后可用。

          10.LRANGE
          語法:LRANGE
          key start
          stop
          說明:該操作的時間復雜度為O(S+N),此處S為開始元素的偏移,而N為指定區間的元素的個數。返回存儲在key上的指定元素。開始元素的偏移值和stop的索引值均是以0開始,并且0代表列表中的第一個元素,而1代表第二個元素,以此類推。
          偏移值可以是負值,表示從列表的尾部開始。例如,-1代表列表的最后一個元素,而-2代表列表中的倒數第二個元素。需要注意的是:如果有一個列表,元素編號為從0到100,那么LRANGE
          list 0
          10將會返回11個元素,也就是說,該操作會包含列表中最后端的元素。
          索引越界:越界索引將不會引發錯誤。如果開始值超出列表的范圍,或者start的值大于end的值,那么將會返回一個空列表。如果end超出列表的范圍,那么Redis將會將其作為列表中的最后一個元素對待。
          返回值:返回指定區域中的元素的列表。
          該命令自0.07版本后可用。

          11.LREM
          語法:LREM
          key count
          value
          說明:該命令的時間復雜度為O(N),此處N為列表的長度。在key對應的列表中刪除前count個其值為value的元素。count的值會按照如下方式來影響操作:
          (1)count
          > 0:從列表首部開始移除其值為value的count個元素
          (2)count <
          0:從列表尾部開始移除其值為value的|count|個元素
          (3)count =
          0:移除所有其值為value的元素
          需要注意的是:不存在的key會被當作空列表存在。因此,如果key不存在,那么該命令將會始終返回0。
          返回值:返回移除的元素的個數。
          該命令自0.07版本后可用。

          12.LSET
          語法:LSET
          key index
          value
          說明:時間復雜度為O(N),此處N為列表的長度。設置列表中第一個或者最后一個元素的時間復雜度為O(1)。將列表中index處的值設置為value。如果index超出列表的返回,那么發生錯誤。
          返回值:狀態碼。
          該命令自0.07版本后可用。

          13.LTRIM
          語法:LTRIM
          key start
          stop
          說明:該操作的時間復雜度為O(N),此處N為操作將要移除的元素的個數。對一個已經存在列表進行LTRIM操作將會使得列表僅僅包含指定區間中的元素。start和stop的索引值均是以0開始的,這里0表示列表中的第一個元素,1表示第二個元素,以此類推。start和stop可以是負值,這意味著從偏移值是從列表的尾部開始,這里-1表示列表中的最后一個元素,而-2表示倒數第二個元素,以此類推。超出界限的索引值并不會產生錯誤:如果start的值超出列表的范圍,或者start
          >
          end,那么將會返回一個空列表。如果end超出列表的界限,那么Redis將會將其視作列表的最后一個元素。
          返回值:狀態碼。
          該命令自0.07版本后可用。

          14.RPOP
          語法:RPOP
          key
          說明:該操作的時間復雜度為O(1)。移除并返回存儲在key上的列表中的最后一個元素。
          返回值:最后一個元素的值,如果key不存在,那么返回值為nil。
          該命令自0.07版本后可用。

          15.RPOPLPUSH
          語法:RPOPLPUSH
          source
          destination
          說明:該操作的時間復雜度為O(1)。原子性地返回并移除存儲在source列表中的最后一個元素,并將其壓入由destination指定的列表中。如果source不存在,那么將不會進行任何操作,并且返回值為nil。如果source和destination相同,操作等同于將列表的最后一個元素移至列表的首部。因此,可以將該命令看作是列表的輪轉操作。
          返回值:彈出/壓入的元素。
          該命令自1.1版本后可用。

          16.RPUSH
          語法:RPUSH
          key
          value
          說明:該操作的時間復雜度為O(1)。將元素插入存儲在key上的列表的尾部。如果key不存在,那么在執行操作之前會創建一個空列表。如果key對應的值不是列表,那么將會發生錯誤。
          返回值:返回操作完成后列表的長度。
          該命令自0.07版本后可用。

          17.RPUSHX
          語法:RPUSHX
          key
          value
          說明:該操作的時間復雜度為O(1)。如果key存在并且其值為列表,那么將value插入該列表的尾部。如果key不存在,那么將不進行任何操作。
          返回值:返回操作完成后列表的長度。
          該命令自2.1.1版本后可用。

          posted on 2012-06-19 12:45 強強 閱讀(340) 評論(0)  編輯  收藏 所屬分類: Redis

          主站蜘蛛池模板: 双江| 交口县| 饶平县| 宁津县| 邵阳市| 凤冈县| 泌阳县| 沾化县| 呼玛县| 兰溪市| 大石桥市| 卓尼县| 徐州市| 衡水市| 宣城市| 恭城| 光泽县| 广汉市| 静海县| 达拉特旗| 铜梁县| 五华县| 延庆县| 达尔| 前郭尔| 苏尼特右旗| 洞口县| 中牟县| 水富县| 西充县| 泌阳县| 凤城市| 张掖市| 阳朔县| 铅山县| 庆城县| 榆树市| 项城市| 东乡| 宿迁市| 东莞市|