<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    分享java帶來的快樂

    我喜歡java新東西

    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 強強 閱讀(333) 評論(0)  編輯  收藏 所屬分類: Redis

    主站蜘蛛池模板: 亚洲精品无码av中文字幕| 秋霞人成在线观看免费视频| 免费国产va视频永久在线观看| 大陆一级毛片免费视频观看| 亚洲黄页网在线观看| 日韩免费一区二区三区在线播放| 亚洲国产亚洲综合在线尤物| 222www在线观看免费| 精品97国产免费人成视频| 亚洲国产成人五月综合网| 一级毛片高清免费播放| 久久影视综合亚洲| 亚洲人成色777777老人头| 日韩一区二区三区免费体验| 国产亚洲Av综合人人澡精品| 亚洲日本中文字幕天堂网| 国产一级淫片a免费播放口| 亚洲美女视频一区| 免费无码不卡视频在线观看| 猫咪免费观看人成网站在线| 亚洲色成人WWW永久网站| 最近免费中文字幕mv在线电影 | 亚洲福利视频导航| 四虎最新永久免费视频| 亚洲第一成年网站视频| 亚洲国产综合人成综合网站| 久99久精品免费视频热77| 2020天堂在线亚洲精品专区| 亚洲成?v人片天堂网无码| 久久久久久久岛国免费播放| 亚洲愉拍一区二区三区| 亚洲国产精品毛片av不卡在线| 午夜精品射精入后重之免费观看 | 一二三四免费观看在线视频中文版| 亚洲国产精品成人午夜在线观看 | 亚洲毛片一级带毛片基地| 成年男女男精品免费视频网站 | 国产男女猛烈无遮挡免费视频网站 | 91成人免费在线视频| 日本中文字幕免费看| 亚洲成人免费网站|