Redis教程10-列表(List)常用命令使用參考3
1.LSET
LSET key index value
將列表key下標為index的元素的值設定為value。
當index引數超出範圍,或對一個空列表(key不存在)進行LSET時,返回一個錯誤。
關於列表下標的更多資訊,請參考LINDEX命令。
可用版本:>= 1.0.0
時間複雜度:
對頭元素或尾元素進行LSET操作,複雜度為 O(1)。 其他情況下,為 O(N),N為列表的長度。 返回值:操作成功返回ok,否則返回錯誤資訊。127.0.0.1:6379> exists ages (integer) 0 127.0.0.1:6379> lset ages 0 11 // key不存在(error) ERR no such key 127.0.0.1:6379> rpush ages 00 11 22 33 (integer) 4 127.0.0.1:6379> lset ages 1 44 // 第二個元素改為44 OK 127.0.0.1:6379> lrange ages 0 -1 // 檢視 1) "00" 2) "44" 3) "22" 4) "33" 127.0.0.1:6379> lset ages 5 66 // index5超過範圍 (error) ERR index out of range
2.LTRIM
LTRIM key start stop
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。
舉個例子,執行命令LTRIMlist02,表示只保留列表list的前三個元素,其餘元素全部刪除。
下標(index)引數start和stop都以0為底,也就是說,以0表示列表的第一個元素,以1表示列表的第二個元素,以此類推。
你也可以使用負數下標,以-1表示列表的最後一個元素,-2表示列表的倒數第二個元素,以此類推。
當key不是列表型別時,返回一個錯誤。
注意LTRIM命令和程式語言區間函式的區別
假如你有一個包含一百個元素的列表list,對該列表執行LTRIMlist010,結果是一個包含11個元素的列表,這表明stop
超出範圍的下標
超出範圍的下標值不會引起錯誤。
如果start下標比列表的最大下標end(LLENlist減去1)還要大,或者start>stop,LTRIM返回一個空列表(因為LTRIM已經將整個列表清空)。
如果stop下標比end下標還要大,Redis將stop的值設定為end。
可用版本:>= 1.0.0
時間複雜度:O(N),N為被移除的元素的數量。
返回值:
命令執行成功時,返回ok。# 情況 1: 常見情況, start 和 stop 都在列表的索引範圍之內 redis> LRANGE alpha 0 -1 # alpha 是一個包含 5 個字串的列表 1) "h" 2) "e" 3) "l" 4) "l" 5) "o" redis> LTRIM alpha 1 -1 # 刪除 alpha 列表索引為 0 的元素 OK redis> LRANGE alpha 0 -1 # "h" 被刪除了 1) "e" 2) "l" 3) "l" 4) "o" # 情況 2: stop 比列表的最大下標還要大 redis> LTRIM alpha 1 10086 # 保留 alpha 列表索引 1 至索引 10086 上的元素 OK redis> LRANGE alpha 0 -1 # 只有索引 0 上的元素 "e" 被刪除了,其他元素還在 1) "l" 2) "l" 3) "o" # 情況 3: start 和 stop 都比列表的最大下標要大,並且 start < stop redis> LTRIM alpha 10086 123321 OK redis> LRANGE alpha 0 -1 # 列表被清空 (empty list or set) # 情況 4: start 和 stop 都比列表的最大下標要大,並且 start > stop redis> RPUSH new-alpha "h" "e" "l" "l" "o" # 重新建立一個新列表 (integer) 5 redis> LRANGE new-alpha 0 -1 1) "h" 2) "e" 3) "l" 4) "l" 5) "o" redis> LTRIM new-alpha 123321 10086 # 執行 LTRIM OK redis> LRANGE new-alpha 0 -1 # 同樣被清空 (empty list or set)
3.RPOP
RPOP key
移除並返回列表key的尾元素。
可用版本:>= 1.0.0
時間複雜度:O(1)
返回值:
列表的尾元素。 當key不存在時,返回nil。 具體時間用參考 LPOP命令, 除了移除元素方向不同, 其他一致4.RPUSH
RPUSH key value [value ...]
將一個或多個值value插入到列表key的表尾(最右邊)。
如果有多個value值,那麼各個value值按從左到右的順序依次插入到表尾:比如對一個空列表mylist執行RPUSHmylistabc,得出的結果列表為abc,等同於執行命令RPUSHmylista、RPUSHmylistb、RPUSHmylistc。
如果key不存在,一個空列表會被建立並執行RPUSH操作。
當key存在但不是列表型別時,返回一個錯誤。
在 Redis 2.4 版本以前的 RPUSH 命令,都只接受單個 value 值。
可用版本:>= 1.0.0
時間複雜度:O(1)
返回值:執行RPUSH操作後,表的長度。
RPUSH命令的使用參考命令LPUSH命令, 除了新增元素方向不同, 使用基本一致...
5.RPUSHX
RPUSHX key value
將值value插入到列表key的表尾,當且僅當key存在並且是一個列表。
和RPUSH命令相反,當key不存在時,RPUSHX命令什麼也不做。
可用版本:>= 2.2.0
時間複雜度:O(1)
返回值:RPUSHX命令執行之後,表的長度。
RPUSHX命令的使用參考命令LPUSHX命令, 除了新增元素方向不同, 使用基本一致... ...