redis——列表(list)

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"
相關文章
相關標籤/搜索