1. 程式人生 > >redis對list進行的相關操作

redis對list進行的相關操作

push 找到 相關操作 ror borde .html operation value utf-8

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 相等的值。

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中對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 表示列表的倒數第二個元素,以此類推。

列表中下標為指定索引值的元素。 如果指定索引值不在列表的區間範圍內,返回 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 命令用於在列表的元素前或者後插入元素。

當指定元素不存在於列表中時,不執行任何操作。 當列表不存在時,被視為空列表,不執行任何操作。 如果 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沒有被移除

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 。

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

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‘]

redis對list進行的相關操作