redis對list進行的相關操做

redis對list類型進行的相關操做以及如何在python使用

redis對list類型操做的命令:

命令 語法 概述 返回值
Redis Blpop 命令 BLPOP key1 [key2 ] timeout  移出並獲取列表的第一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止 若是列表爲空,返回一個 nil 。 不然,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
Redis Brpop 命令 BRPOP key1 [key2 ] timeout 移出並獲取列表的最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。 假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
Redis Brpoplpush 命令 BRPOPLPUSH source destination timeout 從列表中彈出一個值,將彈出的元素插入到另一個列表中並返回它; 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。 假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長。
Redis Lindex 命令 LINDEX key index  經過索引獲取列表中的元素 列表中下標爲指定索引值的元素。 若是指定索引值不在列表的區間範圍內,返回 nil 。
Redis Linsert 命令 LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者後插入元素 若是命令執行成功,返回插入操做完成以後,列表的長度。 若是沒有找到指定元素 ,返回 -1 。 若是 key 不存在或爲空列表,返回 0 。
Redis Llen 命令 LLEN key  獲取列表長度 返回列表的長度,列表不存在返回0
Redis Lpop 命令 LPOP key 移出並獲取列表的第一個元素 列表的第一個元素。 當列表 key 不存在時,返回 nil 。
Redis Lpush 命令 LPUSH key value1 [value2] 將一個或多個值插入到列表頭部 執行 LPUSH 命令後,列表的長度。
Redis Lpushx 命令 LPUSHX key value  將一個值插入到已存在的列表頭部 命令執行以後,列表的長度。列表不存在時操做無效。
Redis Lrange 命令 LRANGE key start stop 獲取列表指定範圍內的元素 一個列表,包含指定區間內的元素。
Redis Lrem 命令 LREM key count value 移除列表元素

被移除元素的數量。 列表不存在時返回 0 。
count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量爲 COUNT 。
count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量爲 COUNT 的絕對值。
count = 0 : 移除表中全部與 VALUE 相等的值。html

Redis Lset 命令 LSET key index value 經過索引設置列表元素的值 操做成功返回 ok ,當索引參數超出範圍,或對一個空列表進行 LSET 時,返回一個錯誤。
Redis Ltrim 命令 LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除。 命令執行成功時,返回 ok 
Redis Rpop 命令 RPOP key 移除列表的最後一個元素,返回值爲移除的元素。 被移除的元素。當列表不存在時,返回 nil 
Redis Rpoplpush 命令 RPOPLPUSH source destination 移除列表的最後一個元素,並將該元素添加到另外一個列表開始並返回 被彈出的元素。若是列表無元素,返回nil
Redis Rpush 命令 RPUSH key value1 [value2] 在列表中添加一個或多個值 執行 RPUSH 操做後,列表的長度。當key存在但不是列表類型時,返回一個錯誤。
Redis Rpushx 命令 RPUSHX key value 爲已存在的列表添加值 執行 Rpushx 操做後,列表的長度,若是列表不存在,操做無效

                                                                    redis list類型命令文檔python

 

在python中對redis list進行的相關操做:

# -*- coding: utf-8 -*-
import redis
# 鏈接本地redis r = redis.Redis(host="127.0.0.1",port=6379)

1. Lpush 命令將一個或多個值插入到列表頭部。 若是 key 不存在,一個空列表會被建立並執行 LPUSH 操做。 當 key 存在但不是列表類型時,返回一個錯誤。

執行 LPUSH 命令後,列表的長度。
print(r.lpush("1",1))  # 輸出的結果是1
print(r.lpush("1",1))  # 輸出的結果是2
print(r.lpush("1",2,3,4))  # 輸出的結果是5

print(r.set("2",1))   # 輸出的結果是 True
print(r.lpush("2",2))     # 輸出的結果是 redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value,緣由是鍵 2 是字符串類型,咱們用list中的lpush給他添加元素

2. Rpush 命令用於將一個或多個值插入到列表的尾部(最右邊)。

若是列表不存在,一個空列表會被建立並執行 RPUSH 操做。 當列表存在但不是列表類型時,返回一個錯誤。
執行 RPUSH 操做後,列表的長度。
print(r.rpush("2",1))     # 輸出的結果是1
print(r.rpush("2",2,3))   # 輸出的結果是3
print(r.rpush("2",4,5))   # 輸出的結果是5

3.Blpop 命令移出並獲取列表的第一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

若是列表爲空,返回一個 None 。 不然,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
print(r.rpush("3",1,2,3,4,5,6,))      # 輸出的結果是6
print(r.blpop("3"))                   # 輸出的結果是('3', '1')
print(r.blpop("3"))                   # 輸出的結果是('3', '2')
print(r.blpop("3"))                   # 輸出的結果是('3', '3')
print(r.blpop("4",timeout=2))         # 由於鍵 4 不存在,因此2秒後輸出的結果是None

4.Brpop 命令移出並獲取列表的最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

假如在指定時間內沒有任何元素被彈出,則返回一個None 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
print(r.rpush("4",1,2,3,4,5,6,))      # 輸出的結果是6
print(r.brpop("4"))      # 輸出的結果是('4', '6')
print(r.brpop("4"))      # 輸出的結果是('4', '5')
print(r.brpop("4"))      # 輸出的結果是('4', '4')
print(r.brpop("5",timeout=2))      # 由於鍵 4 不存在,因此2秒後輸出的結果是None

5. Brpoplpush 命令從列表中彈出一個值,將彈出的元素插入到另一個列表中並返回它; 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

假如在指定時間內沒有任何元素被彈出,則返回一個 None 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長。
print(r.rpush("11",1,2,3))      # 輸出的結果是3
print(r.rpush("22",4,5,6,))      # 輸出的結果是3
print(r.brpoplpush(src="11",dst="22",timeout=2))  # 輸出的結果是3

print(r.brpoplpush(src="44",dst="22",timeout=2)) # 鍵44 不存在,輸出的結果是None

 

6. Lindex 命令用於經過索引獲取列表中的元素。你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。 redis

列表中下標爲指定索引值的元素。 若是指定索引值不在列表的區間範圍內,返回 None 。
print(r.rpush("6",1,2,3))      # 輸出的結果是3
print(r.lindex("6",1))        # 輸出的結果是2
print(r.lindex("6",2))        # 輸出的結果是3
print(r.lindex("6",3))        # 輸出的結果是None
print(r.lindex("6",4))        # 輸出的結果是None
print(r.lindex("6",-1))       # 輸出的結果是3

 

7. Linsert 命令用於在列表的元素前或者後插入元素。post

當指定元素不存在於列表中時,不執行任何操做。 當列表不存在時,被視爲空列表,不執行任何操做。 若是 key 不是列表類型,返回一個錯誤。
若是命令執行成功,返回插入操做完成以後,列表的長度。 若是沒有找到指定元素 ,返回 -1 。 若是 key 不存在或爲空列表,返回 0
print(r.rpush("7",1))      # 輸出的結果是1
print(r.rpush("7",2))      # 輸出的結果是2
print(r.linsert("7","BEFORE","2",12))    # 輸出的結果是2

8. Llen 命令用於返回列表的長度。 若是列表 key 不存在,則 key 被解釋爲一個空列表,返回 0 。 若是 key 不是列表類型,返回一個錯誤。
print(r.llen("8"))       # key 不存在,輸出的結果是0
print(r.rpush("8",1))    # 輸出的結果是1
print(r.llen("8"))       # 輸出的結果是1
print(r.rpush("8",2,3))    # 輸出的結果是3
print(r.llen("8"))       # 輸出的結果是3

9. Lpop 命令用於移除並返回列表的第一個元素。

列表的第一個元素。 當列表 key 不存在時,返回 None 。
print(r.lpop("9"))       # 輸出的結果是None
print(r.rpush("9",1))    # 輸出的結果是1
print(r.rpush("9",2))    # 輸出的結果是2
print(r.lpop("9"))       # 輸出的結果是1

說明:被移除掉的是第一個值 1,  值2沒有被移除url

 

10.Lpushx 將一個或多個值插入到已存在的列表頭部,列表不存在時操做無效。
print(r.rpush("10",1))       # 輸出的結果是1
print(r.rpushx("10",2))      # 輸出的結果是2
print(r.rpushx("10",3))      # 輸出的結果是3
print(r.rpushx("11",3))      # 輸出的結果是5
print(r.lrange("10",0,-1))   # 輸出的結果是['1', '2', '3']
print(r.lrange("11",0,-1))   # 輸出的結果是['1', '2', '1', '2', '3']

11.Lrange 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。

你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
print(r.rpush("11",1,2))       # 輸出的結果是2
print(r.rpush("11",3,4))       # 輸出的結果是4
print(r.lrange("11",0,-1))     # 輸出的結果是['1', '2', '3', '4']
print(r.lrange("11",1,2))      # 輸出的結果是['2', '3']

12.Lrem 根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素。

COUNT 的值能夠是如下幾種:
count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量爲 COUNT 。
count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量爲 COUNT 的絕對值。
count = 0 : 移除表中全部與 VALUE 相等的值。
被移除元素的數量。 列表不存在時返回 0 。
print(r.rpush("12", 1))  # 輸出的結果是1
print(r.rpush("12", 1))  # 輸出的結果是2
print(r.rpush("12", 2))  # 輸出的結果是3
print(r.rpush("12", 1))  # 輸出的結果是4
print(r.lrem("12",1,-2)) # 輸出的結果是2
print(r.lrange("12",0,-1)) # 輸出的結果是['1', '2']

13. Lset 經過索引來設置元素的值。

當索引參數超出範圍,或對一個空列表進行 LSET 時,返回一個錯誤
操做成功返回 True ,不然返回錯誤信息。
print(r.rpush("13",1,2,3,4))     # 輸出的結果是4
print(r.lset("13",1,5))          # 輸出的結果是True
print(r.lrange("13",0,-1))       # 輸出的結果是['1', '5', '3', '4']

14. Ltrim 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除。

下標 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。
你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
print(r.rpush("14",1,2,3,4))      # 輸出的結果是4
print(r.ltrim("14",1,-2))         # 輸出的結果是True
print(r.lrange("14",0,-1))        # 輸出的結果是['2', '3']

 

   15. Rpop 命令用於移除並返回列表的最後一個元素。
    列表的最後一個元素。 當列表不存在時,返回 None 。spa

  print(r.rpush("15",1,2,3,4)) # 輸出的結果是4
  print(r.rpop("15"))          # 輸出的結果是4
  print(r.lrange("15",0,-1))  # 輸出的結果是['1', '2', '3'].net

 

16.Rpoplpush 命令用於移除列表的最後一個元素,並將該元素添加到另外一個列表並返回。
print(r.rpush("16",1,2,3,4))     # 輸出的結果是4
print(r.rpush("17",1,2,3,4))     # 輸出的結果是4
print(r.rpoplpush("16","17"))    # 輸出的結果是4
print(r.lrange("16",0,-1))       # 輸出的結果是['1', '2', '3']
print(r.lrange("17",0,-1))       # 輸出的結果是['4', '1', '2', '3', '4']

17.Rpushx 命令用於將一個或多個值插入到已存在的列表尾部(最右邊)。若是列表不存在,操做無效。
print(r.rpushx("18",1))       # 由於鍵18 不存在,因此插入失敗,輸出的結果是0
print(r.rpush("18",2))        # 輸出的結果是1
print(r.rpushx("18",3))       # 輸出的結果是2
print(r.lrange("18",0,-1))    # 輸出的結果是['2', '3']
相關文章
相關標籤/搜索