LPUSH key value [value ...]
將一個或多個值 value 插入到列表 key 的表頭(l指left),如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表頭:
如說,對空列表 mylist 執行命令 LPUSH mylist a b c ,列表的值將是 c b a .返回值: 操作後的元素數量
注:
1:key 不存在,自動創建空列表並執行 LPUSH 操作。
2:key 存在但不是列表類型時,返回一個錯誤。
3:rpush key value 是把值插入到鏈表尾部,不再單述
4:lpushx 在key不存在時,不自動創建鏈接,不再單述
LPOP key
移除並返回列表 key 的頭元素。返回值:列表的頭元素。
當 key 不存在時,返回 nil。
注: rpop key 移除並返回列表key的尾元素,不單述
BLPOP key [key ...] timeout
BLPOP 是列表的阻塞式(blocking)彈出原語。
它是 LPOP 命令的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,連接將被 BLPOP 命令阻塞,直到等待超時或發現可彈出元素爲止。
當給定多個 key 參數時,按參數 key 的先後順序依次檢查各個列表,彈出第一個非空列表的頭元素並結束命令。
注:
1: timeout爲0則不超時
2: 此功能有什麼用??
brpop:阻塞彈出隊列尾部的元素,不再單述
LLEN key
返回列表 key 的長度。
注:key 不存在,返回 0;key 不是列表類型,返回錯誤
LRANGE key start stop
返回列表指定區間內的元素,區間以偏移量 start 和 stop 指定。左數從0開始,右數-1開始
注:
1:start大於length,或start位於stop右邊,則LRANGE 返回一個空列表
2:如果 stop 下標比 end 下標還要大,Redis將 stop 的值設置爲 end
LREM key count value
根據參數 count 的值,移除列表中與參數 value 相等的元素。
count 的值可以是以下幾種:
count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量爲 count 。
count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量爲 count 的絕對值。
count = 0 : 移除表中所有與 value 相等的值。
返回值:被移除元素的數量。注:key不存在,則返回0。
LTRIM key start stop
剪切列表,左數從0開始,右數-1開始
LTRIM 命令通常和 LPUSH 命令或 RPUSH 命令配合使用,舉個例子:
LPUSH log newest_log
LTRIM log 0 99
LINDEX key index
返回列表 key 中,下標爲 index 的元素。左數從0開始,右數-1開始。如果 key 不是列表類型,返回一個錯誤。
返回值:列表中下標爲 index 的元素。如果 index 參數的值不在列表的區間範圍內(out of range),返回 nil 。如果 key不是列表返回錯誤
LINSERT key BEFORE|AFTER searchValue value
將值 value 插入到列表 key 當中,位於值 searchValue 之前或之後。
找到searchValue,返回link的新長度;如果沒有找到 searchValue ,返回 -1;如果 key 不存在或爲空列表,返回 0。
RPOPLPUSH source destination
命令 RPOPLPUSH 在一個原子時間內,執行以下兩個動作:
將列表 source 中的最後一個元素(尾元素)彈出,並返回給客戶端。
將 source 彈出的元素插入到列表 destination ,作爲 destination 列表的的頭元素。
注:source destination可以是同一個鏈表
有什麼用?
1:安全隊列 rpoplpush + rpop
2:循環鏈表 單鏈表+rpoplpush 形成循環鏈表
注:brpoplpush 的行爲表現爲阻塞,即source爲空時等待,不單述
----------------------------------------------------------------------------
lpush key value 作用: 把值插入到鏈接頭部;
rpush key value 作用: 把值插入到鏈接尾部;
lrange key start stop
作用: 返回鏈表中[start ,stop]中的元素
規律: 左數從0開始,右數從-1開始。要取所有元素就是從0到-1.
lpop key value 作用: 從鏈接頭部刪除值;
rpop key value 作用: 從鏈接尾部刪除值;
lrem key count value
作用: 從key鏈表中刪除 value值
注: 刪除count的 絕對值 個value後結束
count>0 從表頭刪除,例如3 表示從前往後刪除3個。
count<0 從表尾刪除,例如-3表示從後往前刪除3個。
[命令] 從左向右刪除1個b lrem answer 1 b
[命令] 從右向左刪除2個a lrem answer -2 a
ltrim key start stop
作用: 剪切key對應的鏈接,切[start,stop]一段,並把該段重新賦給key
[命令]截取2和5之間的一段 ltrim wx 2 5 (wx:a b c d e f)
[命令]截取1和-2之間的一段 ltrim wx 1 -2
lindex key index
作用: 返回index索引上的值,如 lindex key 2
llen key
作用:計算鏈接表的元素個數
linsert key after|before search value
作用: 在key鏈表中尋找’search’,並在search值之前|之後,.插入value
注: 一旦找到一個search後,命令就結束了,因此不會插入多個value
[命令]在3前面插入一個2 linsert num before 3 2 (num:1 3 6 8 9)
[命令]在9後面插入一個10 linsert num after 9 10
rpoplpush source bak
作用: 把source的尾部拿出,放在bak的頭部,並返回 該單元值
場景: task + bak 雙鏈表完成安全隊列
業務邏輯:
1:Rpoplpush task bak
2:接收返回值,並做業務處理
3:如果成功,rpop bak 清除任務. 如不成功,下次從bak表裏取任務
brpop / blpop key timeout
作用:等待彈出key的尾(brpop)/頭(blpop)元素,
Timeout爲等待超時時間。如果timeout爲0,則一直等待。
場景: 長輪詢Ajax,在線聊天時,能夠用到
[案例]開兩個終端,其中一個使用 brpop job 20,表示等待20秒;另一個rpush job e 表示給job寫入數據,此時再回到第一個終端。