Redis列表是簡單的字符串列表,按照插入順序排序。能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊),一個列表最多能夠包含2^32-1個元素。redis
list列表命令:排序
一、BLPOP list1 [list2] timeout索引
移出並獲取列表的第一個元素,若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。three
若是列表爲空,返回一個nil。不然,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的list,第二個元素是被彈出元素的值。ci
二、BRPOP list1 [list2] timeoutrem
移出並獲取列表的最後一個元素,若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。字符串
假如在指定時間內沒有任何元素被彈出,則返回一個nil和等待時長,反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的list,第二個元素是被彈出元素的值。io
三、BRPOPLPUSH source destination timeout搜索
從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它;若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。im
假如在指定時間內沒有任何元素被彈出,則返回一個nil和等待時長。反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長。
redis> BRPOPLPUSH msg reciver 500 "hello moto" # 彈出元素的值 (3.38s) # 等待時長 redis> LLEN reciver (integer) 1 redis> LRANGE reciver 0 0 1) "hello moto" # 空列表 redis> BRPOPLPUSH msg reciver 1 (nil) (1.34s)
四、LINDEX list index
經過索引獲取列表中的元素,可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
返回列表中下標爲指定索引值的元素。若是指定索引值不在列表的區間範圍內,返回nil。
redis 127.0.0.1:6379> LPUSH mylist "World" (integer) 1 redis 127.0.0.1:6379> LPUSH mylist "Hello" (integer) 2 redis 127.0.0.1:6379> LINDEX mylist 0 "Hello" redis 127.0.0.1:6379> LINDEX mylist -1 "World" redis 127.0.0.1:6379> LINDEX mylist 3 # index不在 mylist 的區間範圍內 (nil)
五、LINSERT list BEFORE|AFTER pivot value
在列表的元素前或者後插入元素,當指定元素不存在於列表中時,不執行任何操做。
當列表不存在時,被視爲空列表,不執行任何操做。若是list不是列表類型,返回一個錯誤。
將值value插入到列表list當中,位於值pivot以前後以後。
若是命令執行成功,返回插入操做完成以後,列表的長度。若是沒有找到指定元素,返回-1。若是list不存在或爲空列表,返回0。
redis> RPUSH mylist "Hello" (integer) 1 redis> RPUSH mylist "World" (integer) 2 redis> LINSERT mylist BEFORE "World" "There" (integer) 3 redis> LRANGE mylist 0 -1 1) "Hello" 2) "There" 3) "World" redis>
六、LLEN list
獲取列表的長度,若是列表list不存在,則list被解釋爲一個空列表,返回0。若是list不是列表類型,返回一個錯誤。
redis 127.0.0.1:6379> RPUSH list1 "foo" (integer) 1 redis 127.0.0.1:6379> RPUSH list1 "bar" (integer) 2 redis 127.0.0.1:6379> LLEN list1 (integer) 2
七、LPOP list
移出並獲取列表的第一個元素,返回列表的第一個元素,當列表list不存在時,返回nil。
redis 127.0.0.1:6379> RPUSH list1 "foo" (integer) 1 redis 127.0.0.1:6379> RPUSH list1 "bar" (integer) 2 redis 127.0.0.1:6379> LPOP list1 "foo"
八、LPUSH list value1 [value2]
將一個或多個值插入到列表頭部,若是 list 不存在,一個空列表會被建立並執行 LPUSH 操做。 當 list 存在但不是列表類型時,返回一個錯誤。返回執行LPUSH命令後,列表的長度。
注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受單個 value 值。
127.0.0.1:6379> LPUSH list1 "foo" (integer) 1 127.0.0.1:6379> LPUSH list1 "bar" (integer) 2 127.0.0.1:6379> LRANGE list1 0 -1 1) "bar" 2) "foo"
九、LPUSHX list value1 ... valueN
將一個值插入到已存在的列表的頭部,列表不存在是操做無效。返回LPUSHX命令執行以後,列表的長度。
127.0.0.1:6379> LPUSH list1 "foo" (integer) 1 127.0.0.1:6379> LPUSHX list1 "bar" (integer) 2 127.0.0.1:6379> LPUSHX list2 "bar" (integer) 0 127.0.0.1:6379> LRANGE list1 0 -1 1) "bar" 2) "foo"
十、LRANGE list start end
返回列表中指定區間內的元素,區間以偏移量start和end指定。其中0表示列表的第一個元素,1表示列表的第二個元素,以此類推。也可使用負數下標,以-1表示列表的最後一個元素,-2表示列表的倒數第二個元素,以此類推。
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> LRANGE mylist 0 0 1) "one" redis> LRANGE mylist -3 2 1) "one" 2) "two" 3) "three" redis> LRANGE mylist -100 100 1) "one" 2) "two" 3) "three" redis> LRANGE mylist 5 10 (empty list or set) redis>
十一、LREM list count value
lrem根據參數count的值,移除列表中與參數value相等的元素。
count的值能夠是如下幾種:
count > 0:從表頭開始向表尾搜索,移除與value相等的元素,數量爲count。
count < 0:從表尾開始向表頭搜索,移除與value相等的元素,數量爲count的絕對值。
count = 0:移除表中全部與value相等的值。
返回被移除元素的數量,列表不存在時返回0。
redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 1 redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 2 redis 127.0.0.1:6379> RPUSH mylist "foo" (integer) 3 redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 4 redis 127.0.0.1:6379> LREM mylist -2 "hello" (integer) 2
十二、LSET list index value
LSET經過索引來設置元素的值。當索引參數超過範圍,或對一個空列表進行lset時,返回一個錯誤。
操做成功返回ok,不然返回錯誤信息。
redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 1 redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 2 redis 127.0.0.1:6379> RPUSH mylist "foo" (integer) 3 redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 4 redis 127.0.0.1:6379> LSET mylist 0 "bar" OK redis 127.0.0.1:6379> LRANGE mylist 0 -1 1: "bar" 2) "hello" 3) "foo" 4) "hello"
1三、LTRIM list start stop
ltrim對一個列表進行修剪,就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除。下標0表示列表的第一個元素,以1表示列表的第二個元素,以此類推。也可使用負數下標,以-1表示列表的最後一個元素,-2表示列表的倒數第二個元素,以此類推。命令執行成功,返回ok.
redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 1 redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 2 redis 127.0.0.1:6379> RPUSH mylist "foo" (integer) 3 redis 127.0.0.1:6379> RPUSH mylist "bar" (integer) 4 redis 127.0.0.1:6379> LTRIM mylist 1 -1 OK redis 127.0.0.1:6379> LRANGE mylist 0 -1 1) "hello" 2) "foo" 3) "bar"
1四、RPOP list
用於移除並返回列表的最後一個元素,當列表不存在時,返回nil。
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> RPOP mylist "three" redis> LRANGE mylist 0 -1 1) "one" 2) "two" redis>
1五、RPOPLPUSH source destination
用於移除列表的最後一個元素,並將該元素添加到另外一個列表並返回。
返回被彈出的元素。
redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 1 redis 127.0.0.1:6379> RPUSH mylist "foo" (integer) 2 redis 127.0.0.1:6379> RPUSH mylist "bar" (integer) 3 redis 127.0.0.1:6379> RPOPLPUSH mylist myotherlist "bar" redis 127.0.0.1:6379> LRANGE mylist 0 -1 1) "hello" 2) "foo"
1六、RPUSH list value1... valueN
RPUSH命令用於將一個或多個值插入到列表的尾部(最右邊),若是列表不存在,一個空列表會被建立並執行RPUSH操做,當列表存在但不是列表類型時,返回一個錯誤。執行RPUSH操做後,列表的長度。
注意:在Redis2.4版本以前的RPUSH命令,都只接受單個value值。
redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 1 redis 127.0.0.1:6379> RPUSH mylist "foo" (integer) 2 redis 127.0.0.1:6379> RPUSH mylist "bar" (integer) 3 redis 127.0.0.1:6379> LRANGE mylist 0 -1 1) "hello" 2) "foo" 3) "bar"
1七、RPUSHX list value1...valueN
RPUSHX命令用於將一個值插入到已存在的列表尾部(最右邊),若是列表不存在,操做無效。
返回執行RPUSHX操做後,列表的長度。
redis 127.0.0.1:6379> RPUSH mylist "hello" (integer) 1 redis 127.0.0.1:6379> RPUSH mylist "foo" (integer) 2 redis 127.0.0.1:6379> RPUSHX mylist2 "bar" (integer) 0 redis 127.0.0.1:6379> LRANGE mylist 0 -1 1) "hello" 2) "foo"