<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综合人人澡精品| 久久青草亚洲AV无码麻豆| 亚洲人成人77777在线播放| 久章草在线精品视频免费观看| 国产精品亚洲玖玖玖在线观看 | 成人在线免费视频| 亚洲国产精品一区二区久久| 2022免费国产精品福利在线 | 99在线精品视频观看免费| 久久久久亚洲精品无码蜜桃| 最近的中文字幕大全免费8| 午夜亚洲www湿好大| 91香焦国产线观看看免费| 久久亚洲精品成人AV| 日本妇人成熟免费中文字幕| 亚洲精品国产福利一二区| 美女视频黄a视频全免费网站色| 无码不卡亚洲成?人片| 中文字幕成人免费高清在线| 狠狠色伊人亚洲综合成人| 一级毛片aaaaaa免费看| 亚洲熟妇av一区二区三区下载| 最新欧洲大片免费在线| 立即播放免费毛片一级| 亚洲一级黄色视频| 一级毛片免费观看不卡的| 亚洲国产精品综合福利专区| 成人免费网站在线观看| 免费看黄福利app导航看一下黄色录像 | 久久这里只精品99re免费| 亚洲成人动漫在线观看| 永久黄网站色视频免费直播| 亚洲国产精品久久久久久| 在线观看H网址免费入口| 亚洲av成人一区二区三区观看在线| 人妻无码一区二区三区免费| 亚洲人精品亚洲人成在线| 亚洲国产精品人人做人人爽| 永久免费视频网站在线观看| 亚洲第一成年网站视频| 亚洲av午夜福利精品一区人妖|