python3 操作 redis List(列表) 例項 詳解
沒有安裝redis的話可以看我另一篇blog,有資源和方法
首先先看一下python3 操作redis都有哪些命令
- lrange(key , start , stop)
- lpush(key , value)
- rpush(key , value)
- lpop(key)
- rpop(key)
- blpop(key)
- brpop(key)
- brpoplpush(source,destination,timeout)
- lindex(key,index)
- linsert(key,before|after,privot,value)
- llen(key)
- lpushx(key)
- lrem(key , value , count)
- lset(key , index , value)
- ltrim(key , start , stop)
- rpoplpush(source , destination)
- rpushx(key , value)
下面是具體例子詳解和程式碼:
①lrange(key , start , stop)
返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定。
下標(index)引數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("0",1,2,3,4)
print(r.lrange("0" , 0 , -1))
②lpush(key , value)
將一個或多個值 value 插入到列表 key 的表頭
如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表頭
如果 key 不存在,一個空列表會被建立並執行 LPUSH 操作
當 key 存在但不是列表型別時,返回一個錯誤
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("1",1)
print(r.lrange("1" , 0 , -1)) #列印列表"1"的全部內容
r.lpush("1",1,2,3,4)
print(r.lrange("1" , 0 , -1))
③rpush(key , value)
將一個或多個值 value 插入到列表 key 的表尾(最右邊)。
如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表尾
如果 key 不存在,一個空列表會被建立並執行 RPUSH 操作。
當 key 存在但不是列表型別時,返回一個錯誤。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("2",1)
print(r.lrange("2" , 0 , -1)) #列印列表"2"的全部內容
r.rpush("2",1,2,3,4)
print(r.lrange("2" , 0 , -1))
④lpop(key)
移除並返回列表 key 的頭元素。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("3",1,2,3,4)
print(r.lrange("3" , 0 , -1)) #列印列表"3"的全部內容
r.lpop("3")
print(r.lrange("3" , 0 , -1))
⑤rpop(key)
移除並返回列表 key 的尾元素。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("4",1,2,3,4)
print(r.lrange("4" , 0 , -1)) #列印列表"4"的全部內容
r.rpop("4")
print(r.lrange("4" , 0 , -1))
⑥blpop(key)
Blpop 命令移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
如果列表為空,返回一個 None 。 否則,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("6",1,2,3,4,4,5,6)
print(r.blpop("6"))
print(r.blpop("6"))
print(r.blpop("6"))
print(r.blpop("100" , timeout=2))#因為鍵 100 不存在,所以2秒後輸出的結果是None
print(r.lrange("6" , 0 , -1)) #列印列表"6"的全部內容
⑦brpop(key)
Brpop 命令移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
假如在指定時間內沒有任何元素被彈出,則返回一個None 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("7",1,2,3,4,5,6,)
print(r.lrange("7" , 0 , -1)) #列印列表"7"的全部內容
print(r.brpop("7"))
print(r.brpop("7"))
print(r.brpop("7"))
print(r.brpop("101",timeout=2)) #因為鍵 101 不存在,所以2秒後輸出的結果是None
print(r.lrange("7" , 0 , -1)) #列印列表"7"的全部內容
⑧brpoplpush(source,destination,timeout)
命令從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
假如在指定時間內沒有任何元素被彈出,則返回一個 None 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("8",1,2,3)
r.rpush("88",4,5,6)
print(r.lrange("8" , 0 , -1)) #列印列表"8"的全部內容
print(r.lrange("88" , 0 , -1)) #列印列表"88"的全部內容
print(r.brpoplpush(src="8",dst="88",timeout=2)) #輸出的結果是3
print(r.brpoplpush(src="44",dst="22",timeout=2)) #鍵44 不存在,輸出的結果是None
print(r.lrange("8" , 0 , -1)) #列印列表"8"的全部內容
print(r.lrange("88" , 0 , -1)) #列印列表"88"的全部內容
⑨lindex(key,index)
通過索引獲取列表中的元素。你也可以使用負數下標,以 -1 表示列表的最後一個元素
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("9",1,2,3)
print(r.lrange("9" , 0 , -1)) #列印列表"8"的全部內容
print(r.lindex("9",0)) #輸出的結果是1
print(r.lindex("9",1)) #輸出的結果是2
print(r.lindex("9",2)) #輸出的結果是3
print(r.lindex("9",3)) #輸出的結果是None
print(r.lindex("9",-1)) #輸出的結果是3
print(r.lrange("9" , 0 , -1)) #列印列表"8"的全部內容
⑩linsert(key,before|after,privot,value)
用於在列表的元素前或者後插入元素。
當指定元素不存在於列表中時,不執行任何操作。 當列表不存在時,被視為空列表,不執行任何操作。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("10",1,2,3)
print(r.lrange("10" , 0 , -1)) #列印列表"10"的全部內容
r.linsert("10" , "BEFORE" , "2" , 10)
print(r.lrange("10" , 0 , -1)) #結果 ['1', '10', '2', '3']
r.rpush("100",1,2,3)
r.linsert("100" , "AFTER" , "2" , 10)
print(r.lrange("100" , 0 , -1)) #結果 ['1', '2', '10', '3']
①①llen(key)
返回列表的長度。 如果列表 key 不存在,則 key 被解釋為一個空列表,返回 0 。 如果 key 不是列表型別,返回一個錯誤。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("11",1,2,3)
print(r.lrange("11" , 0 , -1)) #列印列表"11"的全部內容
print(r.llen("11")) #結果是 3
①②lpushx(key)
將一個或多個值插入到已存在的列表頭部,列表不存在時操作無效。
和lpush的區別是lpushx在列表不存在時操作無效,而lpush會建立一個列表
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("12" , 1,2,3)
r.rpush("122" , 1,2,3)
print(r.lrange("12" , 0 , -1)) #結果為 ['1', '2', '3']
print(r.lrange("122" , 0 , -1)) #結果為 ['1', '2', '3']
r.lpush("123" , 1)
r.lpushx("1223" , 1)
print(r.lrange("123" , 0 , -1)) #結果為 ['1']
print(r.lrange("1223" , 0 , -1)) #結果為 []
①③lrem(key , value , count)
根據引數 COUNT 的值,移除列表中與引數 VALUE 相等的元素。
COUNT 的值可以是以下幾種:
count > 0 : 從表頭開始向表尾搜尋,移除與 VALUE 相等的元素,數量為 COUNT 。
count < 0 : 從表尾開始向表頭搜尋,移除與 VALUE 相等的元素,數量為 COUNT 的絕對值。
count = 0 : 移除表中所有與 VALUE 相等的值。
返回被移除元素的數量。 列表不存在時返回 0 。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("13" , 'a','b','b','c','d','b')
print(r.lrange("13" , 0 , -1)) #結果為['a', 'b', 'b', 'c', 'd', 'b']
r.lrem("13" , "b" , 2)
print(r.lrange("13" , 0 , -1)) #結果為['a', 'c', 'd', 'b']
r.rpush("133" , 'a','b','b','c','d','b')
print(r.lrange("133" , 0 , -1)) #結果為['a', 'b', 'b', 'c', 'd', 'b']
r.lrem("133" , "b" , -2)
print(r.lrange("133" , 0 , -1)) #結果為['a', 'b', 'c', 'd']
①④lset(key , index , value)
將列表 key 下標為 index 的元素的值設定為 value 。
當 index 引數超出範圍,或對一個空列表( key 不存在)進行 LSET 時,返回一個錯誤。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("14" , 1,2,3,4)
print(r.lrange("14" , 0 , -1)) #列印列表"14"的全部內容
r.lset("14",1,9)
print(r.lrange("14" , 0 , -1)) #結果為 ['1', '9', '3', '4']
①⑤ltrim(key , start , stop)
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。
舉個例子,執行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三個元素,其餘元素全部刪除。
下標(index)引數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。
你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
當 key 不是列表型別時,返回一個錯誤。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("15" , 1,2,3,4)
print(r.lrange("15" , 0 , -1)) #列印列表"14"的全部內容
r.ltrim("15",0,1)
print(r.lrange("15" , 0 , -1)) #結果為 ['1', '2']
①⑥rpoplpush(source , destination)
將列表 source 中的最後一個元素(尾元素)彈出,並返回給客戶端。
將 source 彈出的元素插入到列表 destination ,作為 destination 列表的的頭元素。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("16",1,2,3)
r.rpush("166",4,5,6)
print(r.lrange("16" , 0 , -1)) # ['1', '2', '3']
print(r.lrange("166" , 0 , -1)) # ['4', '5', '6']
print(r.rpoplpush(src="16",dst="166")) #輸出的結果是3
print(r.lrange("16" , 0 , -1)) # ['1', '2']
print(r.lrange("166" , 0 , -1)) # ['3', '4', '5', '6']
①⑦rpushx(key , value)
將值 value 插入到列表 key 的表尾,當且僅當 key 存在並且是一個列表。
和 RPUSH 命令相反,當 key 不存在時, RPUSHX 命令什麼也不做。
import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
# for i in range(10):
# r.lpop("17")
# r.lpop("177")
# r.lpop("1777")
r.rpush("17" , 1,2,3)
r.rpush("177" , 1,2,3)
print(r.lrange("17" , 0 , -1)) #結果為 ['1', '2', '3']
print(r.lrange("177" , 0 , -1)) #結果為 ['1', '2', '3']
r.rpush("177" , 4)
r.rpushx("1777" , 4)
print(r.lrange("177" , 0 , -1)) #結果為 ['1', '2', '3', '4']
print(r.lrange("1777" , 0 , -1)) #結果為 []
相關推薦
python3 操作 redis List(列表) 例項 詳解
沒有安裝redis的話可以看我另一篇blog,有資源和方法 首先先看一下python3 操作redis都有哪些命令 lrange(key , start , stop) lpush(key , value) rpush(key , value) lpop(
Linq連線兩個List列表 例項詳解(Linq inner join,left join)
本章節主要介紹Linq的聯接運算,對兩個List< T >,分別 inner join 和 left join 聯接,以此為例,進行例項詳解,程式碼也是自己編寫,親測通過的,可以直接拿著當demo使用。 聯接是指將一個數據源物件與另一個數據源
UGUI製作無限迴圈List列表過程詳解
UI開發其實技術的成分相對來說不算多,但是一個好的UI是絕對少不了底層元件的支援的。我個人認為UI元件中相對比較複雜的就是List了,所以,這兩天實現了一個UGUI的list,寫了好幾個版本,最終這個版本是相對比較好用的,在這我介紹一下大概思路,一是鞏固一下知識做個記錄,
php mysql PDO 查詢操作的例項詳解
php mysql PDO 查詢操作的例項詳解 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <?php $dbh = new PDO(
MongoDB 關於索引操作命令例項詳解
索引是提高查詢查詢效率最有效的手段。索引是一種特殊的資料結構,索引以易於遍歷的形式儲存了資料的部分內容(如:一個特定的欄位或一組欄位值),索引會按一定規則對儲存值進行排序,而且索引的儲存位置在記憶體中,所在從索引中檢索資料會非常快。如果沒有索引,MongoDB必
redis 操作之List列表操作
redis list操作 reids:{ k1:'dafdadfasf', l1:[1,2,3,4] } redis 操作之List列表操作 List操作,redis中的List在在記憶體中按照一個name對應一個List來儲存。如圖: lpush(name,values),新增值
PHP檔案上傳操作例項詳解(包含上傳檔案型別MIME驗證)
本文例項分析了PHP檔案上傳操作。分享給大家供大家參考,具體如下: 檔案上傳 發生在瀏覽器向伺服器發出的請求中。 檔案,對於瀏覽器來講,就是表單中的一個特殊型別的資料而已。 瀏覽器表單中的資料,兩種型別: 字串型別(位元組流編碼) 檔案型別(二進位制編碼),檔案是表單資料中
linux下redis與phpredis安裝詳解與簡單操作
首先下載redis安裝包 [[email protected] ~]#wget http://download.redis.io/releases/redis-3.0.2.tar.gz [[email protected] ~]# tar xzf re
java中List的用法和例項詳解
的用法List包括List介面以及List介面的所有實現類。因為List介面實現了Collection介面,所以List介面擁有Collection介面提供的所有常用方法,又因為List是列表型別,所以List介面還提供了一些適合於自身的常用方法,如表1所示。表1 List介面定義的常用方法及功能從表1可以看
PHP增刪改查操作例項詳解
<?php[email protected]_connect("localhost","root","123456");if(!$linkID){echo "沒連線上";}[email protected]_select_db("bean");if(!$ss){ echo "沒找
pv操作及訊號量實用例項詳解
學習PV操作之前,我們首先來了解兩個很基礎的概念: 同步、互斥: 同步:其實說同步還不如說”協作“,就是我們的目標只有一個,我們奔著同一個目標去的,都是在大家的努力下共同完成這麼一件事情。還是比較容易理解的吧。不見得太難。 互斥:借用別人的一句話“千軍萬馬過獨木橋”,很通俗
【Redis學習】:list資料型別詳解
list資料結構 在redis中,list資料結構是按照插入順序的字串連結串列,和資料結構中的普通連結串列一樣,我們可以在其頭部(left)和尾部(right)新增新的元素。在插入時,如果該鍵並不
redis info 參數詳解
-1 事件處理 架構 單位 不同 cpu malloc client xxx redis info 參數 詳解 info 以一種易於解釋且易於閱讀的格式,返回關於redis服務器的各種信息和統計數值 命令如下:(默認不需要all , 我習慣加 all ,你可以去掉all
Redis配置文件詳解
客戶端連接 data val 行數 read 內存 虛擬內存 master led 1 daemonize yes #是否以後臺進程運行,默認為no 2 pidfile /var/run/redis.pid #如以後臺進程運行,則需指定一個pid,默認為/var
CSS 列表樣式詳解
.com htm 天龍八部 分享 .cn font -s com str CSS列表用於前端的列表排列。 CSS列表屬性作用如下: 設置不同的列表項標記為有序列表 設置不同的列表項標記為無序列表 設置列表項標記為圖像 列表 在HTML中,有兩種類型的列表: 無序列表
redis配置文件詳解及實現主從同步切換
redis redis主從 redis配置文件詳解及實現主從同步切換redis復制Redis復制很簡單易用,它通過配置允許slave Redis Servers或者Master Servers的復制品。接下來有幾個關於redis復制的非常重要特性:一個Master可以有多個Slaves。Slaves能
python操作word、ppt的詳解
網上 功能 auto sed rep 不知道 win32 form display python使用win32com的心得 python可以使用一個第三方庫叫做win32com達到操作com的目的, 我是安裝了Ac
Python List insert()方法詳解
返回 -- 定位 abs pre insert 詳解 頭部 表示 1.功能insert()函數用於將指定對象插入列表的指定位置。 2.語法list.insert(index, obj) 3.參數index: 對象obj需要插入的索引位置。obj: 插入列表中的對象。
操作系統中的目錄詳解
系列 mkdir 保存 linu ges 分隔 組成 查找 而在 首先要搞清楚一些基本的問題 1.文件就是一些數據的集合,計算機的信息都是通過 文件來保存 2.windows下的文件夾與linux下的目錄是同一個東西 3.目錄是一種文件,一種特殊的文件,有時候也被
lamp+redis集群配置詳解
ID 停止 target enable 關閉selinux targe 火墻 官網 not 一,配置防火墻,開啟80、3306端口 #停止firewall服務 systemctl stop firewalld.service #禁止firewall開機啟動 system