欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python3操作redis實(shí)現(xiàn)List列表實(shí)例

 更新時(shí)間:2021年08月03日 16:23:16   作者:dangsh  
本文主要介紹了python3操作redis實(shí)現(xiàn)List列表實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

沒有安裝redis的話可以看這篇文章

首先先看一下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 中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量 start 和 stop 指定。
下標(biāo)(index)參數(shù) start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個(gè)元素,以 1 表示列表的第二個(gè)元素,以此類推。

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)

將一個(gè)或多個(gè)值 value 插入到列表 key 的表頭
如果有多個(gè) value 值,那么各個(gè) value 值按從左到右的順序依次插入到表頭
如果 key 不存在,一個(gè)空列表會(huì)被創(chuàng)建并執(zhí)行 LPUSH 操作
當(dāng) key 存在但不是列表類型時(shí),返回一個(gè)錯(cuò)誤

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"的全部?jī)?nèi)容
r.lpush("1",1,2,3,4)
print(r.lrange("1" , 0 , -1))

③rpush(key , value)

將一個(gè)或多個(gè)值 value 插入到列表 key 的表尾(最右邊)。
如果有多個(gè) value 值,那么各個(gè) value 值按從左到右的順序依次插入到表尾
如果 key 不存在,一個(gè)空列表會(huì)被創(chuàng)建并執(zhí)行 RPUSH 操作。
當(dāng) key 存在但不是列表類型時(shí),返回一個(gè)錯(cuò)誤。

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"的全部?jī)?nèi)容
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"的全部?jī)?nèi)容
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"的全部?jī)?nèi)容
r.rpop("4")
print(r.lrange("4" , 0 , -1))

⑥blpop(key)

Blpop 命令移出并獲取列表的第一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。
如果列表為空,返回一個(gè) None 。 否則,返回一個(gè)含有兩個(gè)元素的列表,第一個(gè)元素是被彈出元素所屬的 key ,第二個(gè)元素是被彈出元素的值。

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))#因?yàn)殒I 100 不存在,所以2秒后輸出的結(jié)果是None
print(r.lrange("6" , 0 , -1)) #打印列表"6"的全部?jī)?nèi)容

⑦brpop(key)

Brpop 命令移出并獲取列表的最后一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。
假如在指定時(shí)間內(nèi)沒有任何元素被彈出,則返回一個(gè)None 和等待時(shí)長(zhǎng)。 反之,返回一個(gè)含有兩個(gè)元素的列表,第一個(gè)元素是被彈出元素所屬的 key ,第二個(gè)元素是被彈出元素的值。

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"的全部?jī)?nèi)容 
print(r.brpop("7"))     
print(r.brpop("7"))     
print(r.brpop("7"))      
print(r.brpop("101",timeout=2))      #因?yàn)殒I 101 不存在,所以2秒后輸出的結(jié)果是None
print(r.lrange("7" , 0 , -1)) #打印列表"7"的全部?jī)?nèi)容 

⑧brpoplpush(source,destination,timeout)

命令從列表中彈出一個(gè)值,將彈出的元素插入到另外一個(gè)列表中并返回它; 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。
假如在指定時(shí)間內(nèi)沒有任何元素被彈出,則返回一個(gè) None 和等待時(shí)長(zhǎng)。 反之,返回一個(gè)含有兩個(gè)元素的列表,第一個(gè)元素是被彈出元素的值,第二個(gè)元素是等待時(shí)長(zhǎng)。

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"的全部?jī)?nèi)容 
print(r.lrange("88" , 0 , -1)) #打印列表"88"的全部?jī)?nèi)容 
print(r.brpoplpush(src="8",dst="88",timeout=2))  #輸出的結(jié)果是3
print(r.brpoplpush(src="44",dst="22",timeout=2))  #鍵44 不存在,輸出的結(jié)果是None
print(r.lrange("8" , 0 , -1)) #打印列表"8"的全部?jī)?nèi)容 
print(r.lrange("88" , 0 , -1)) #打印列表"88"的全部?jī)?nèi)容 

⑨lindex(key,index)

通過索引獲取列表中的元素。你也可以使用負(fù)數(shù)下標(biāo),以 -1 表示列表的最后一個(gè)元素

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"的全部?jī)?nèi)容 
print(r.lindex("9",0))        #輸出的結(jié)果是1
print(r.lindex("9",1))        #輸出的結(jié)果是2
print(r.lindex("9",2))        #輸出的結(jié)果是3
print(r.lindex("9",3))        #輸出的結(jié)果是None
print(r.lindex("9",-1))        #輸出的結(jié)果是3
print(r.lrange("9" , 0 , -1)) #打印列表"8"的全部?jī)?nèi)容 

⑩linsert(key,before|after,privot,value)

用于在列表的元素前或者后插入元素。
當(dāng)指定元素不存在于列表中時(shí),不執(zhí)行任何操作。 當(dāng)列表不存在時(shí),被視為空列表,不執(zhí)行任何操作。

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"的全部?jī)?nèi)容 
r.linsert("10" , "BEFORE" , "2" , 10)
print(r.lrange("10" , 0 , -1)) #結(jié)果 ['1', '10', '2', '3']

r.rpush("100",1,2,3)
r.linsert("100" , "AFTER" , "2" , 10)
print(r.lrange("100" , 0 , -1)) #結(jié)果 ['1', '2', '10', '3']

①①llen(key)

返回列表的長(zhǎng)度。 如果列表 key 不存在,則 key 被解釋為一個(gè)空列表,返回 0 。 如果 key 不是列表類型,返回一個(gè)錯(cuò)誤。

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"的全部?jī)?nèi)容 
print(r.llen("11"))  #結(jié)果是 3

①②lpushx(key)

將一個(gè)或多個(gè)值插入到已存在的列表頭部,列表不存在時(shí)操作無(wú)效。
和lpush的區(qū)別是lpushx在列表不存在時(shí)操作無(wú)效,而lpush會(huì)創(chuàng)建一個(gè)列表

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)) #結(jié)果為 ['1', '2', '3']
print(r.lrange("122" , 0 , -1)) #結(jié)果為 ['1', '2', '3']
r.lpush("123" , 1)
r.lpushx("1223" , 1)
print(r.lrange("123" , 0 , -1)) #結(jié)果為 ['1']
print(r.lrange("1223" , 0 , -1)) #結(jié)果為 []

①③lrem(key , value , count)

根據(jù)參數(shù) COUNT 的值,移除列表中與參數(shù) VALUE 相等的元素。
COUNT 的值可以是以下幾種:
count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數(shù)量為 COUNT 。
count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數(shù)量為 COUNT 的絕對(duì)值。
count = 0 : 移除表中所有與 VALUE 相等的值。
返回被移除元素的數(shù)量。 列表不存在時(shí)返回 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)) #結(jié)果為['a', 'b', 'b', 'c', 'd', 'b']
r.lrem("13" , "b" , 2)
print(r.lrange("13" , 0 , -1)) #結(jié)果為['a', 'c', 'd', 'b']

r.rpush("133" , 'a','b','b','c','d','b')
print(r.lrange("133" , 0 , -1)) #結(jié)果為['a', 'b', 'b', 'c', 'd', 'b'] 
r.lrem("133" , "b" , -2)
print(r.lrange("133" , 0 , -1)) #結(jié)果為['a', 'b', 'c', 'd']

①④lset(key , index , value)

將列表 key 下標(biāo)為 index 的元素的值設(shè)置為 value 。
當(dāng) index 參數(shù)超出范圍,或?qū)σ粋€(gè)空列表( key 不存在)進(jìn)行 LSET 時(shí),返回一個(gè)錯(cuò)誤。

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"的全部?jī)?nèi)容
r.lset("14",1,9)
print(r.lrange("14" , 0 , -1)) #結(jié)果為 ['1', '9', '3', '4']

①⑤ltrim(key , start , stop)

對(duì)一個(gè)列表進(jìn)行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。
舉個(gè)例子,執(zhí)行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三個(gè)元素,其余元素全部刪除。
下標(biāo)(index)參數(shù) start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個(gè)元素,以 1 表示列表的第二個(gè)元素,以此類推。
你也可以使用負(fù)數(shù)下標(biāo),以 -1 表示列表的最后一個(gè)元素, -2 表示列表的倒數(shù)第二個(gè)元素,以此類推。
當(dāng) key 不是列表類型時(shí),返回一個(gè)錯(cuò)誤。


①⑥r(nóng)poplpush(source , destination)

將列表 source 中的最后一個(gè)元素(尾元素)彈出,并返回給客戶端。
將 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"))  #輸出的結(jié)果是3
print(r.lrange("16" , 0 , -1)) # ['1', '2'] 
print(r.lrange("166" , 0 , -1)) # ['3', '4', '5', '6']

①⑦rpushx(key , value)

將值 value 插入到列表 key 的表尾,當(dāng)且僅當(dāng) key 存在并且是一個(gè)列表。
和 RPUSH 命令相反,當(dāng) key 不存在時(shí), 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)) #結(jié)果為 ['1', '2', '3']
print(r.lrange("177" , 0 , -1)) #結(jié)果為 ['1', '2', '3']
r.rpush("177" , 4)
r.rpushx("1777" , 4)
print(r.lrange("177" , 0 , -1)) #結(jié)果為 ['1', '2', '3', '4']
print(r.lrange("1777" , 0 , -1)) #結(jié)果為 []

完整代碼的地址
https://github.com/dangsh/pythonPra/blob/master/redisGit/redisTest.py

到此這篇關(guān)于python3操作redis實(shí)現(xiàn)List列表實(shí)例的文章就介紹到這了,更多相關(guān)python3操作redis List內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Python編寫簡(jiǎn)易的成語(yǔ)接龍游戲

    基于Python編寫簡(jiǎn)易的成語(yǔ)接龍游戲

    成語(yǔ)接龍是中華民族傳統(tǒng)的文字游戲。它歷史悠久,是傳統(tǒng)文字、文化、文明的一個(gè)縮影,也是老少皆宜的民間文化娛樂活動(dòng)。本文將用Python制作一個(gè)簡(jiǎn)單的成語(yǔ)接龍游戲,需要的可以參考一下
    2022-03-03
  • PyCharm 2020 激活到 2100 年的教程

    PyCharm 2020 激活到 2100 年的教程

    這篇文章主要介紹了PyCharm 2020 激活到 2100 年,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)簽到功能

    python實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)簽到功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)簽到功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • django自帶的權(quán)限管理Permission用法說明

    django自帶的權(quán)限管理Permission用法說明

    這篇文章主要介紹了django自帶的權(quán)限管理Permission用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-05-05
  • Django 使用logging打印日志的實(shí)例

    Django 使用logging打印日志的實(shí)例

    下面小編就為大家分享一篇Django 使用logging打印日志的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-04-04
  • 詳解Python pygame安裝過程筆記

    詳解Python pygame安裝過程筆記

    本篇文章主要介紹了詳解Python pygame安裝過程筆記。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-06-06
  • 使用Gitee自動(dòng)化部署python腳本的詳細(xì)過程

    使用Gitee自動(dòng)化部署python腳本的詳細(xì)過程

    小編最近在自學(xué)python,在學(xué)習(xí)過程中有好多意向不到的收獲,真的很開心,今天重點(diǎn)給大家分享使用Gitee自動(dòng)化部署python腳本的詳細(xì)過程,包括安裝環(huán)境搭建及一些注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Python實(shí)現(xiàn)實(shí)時(shí)增量數(shù)據(jù)加載工具的解決方案

    Python實(shí)現(xiàn)實(shí)時(shí)增量數(shù)據(jù)加載工具的解決方案

    這篇文章主要分享結(jié)合單例模式實(shí)際應(yīng)用案例:實(shí)現(xiàn)實(shí)時(shí)增量數(shù)據(jù)加載工具的解決方案。最關(guān)鍵的是實(shí)現(xiàn)一個(gè)可進(jìn)行添加、修改、刪除等操作的增量ID記錄表。需要的可以參考一下
    2022-02-02
  • Python中l(wèi)ambda表達(dá)式的用法示例小結(jié)

    Python中l(wèi)ambda表達(dá)式的用法示例小結(jié)

    本文主要展示了一些lambda表達(dá)式的使用示例,通過這些示例,我們可以了解到lambda表達(dá)式的常用語(yǔ)法以及使用的場(chǎng)景,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 利用Python進(jìn)行數(shù)據(jù)清洗的操作指南

    利用Python進(jìn)行數(shù)據(jù)清洗的操作指南

    數(shù)據(jù)清洗是指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識(shí)別的錯(cuò)誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無(wú)效值和缺失值等。本文為大家介紹了Python進(jìn)行數(shù)據(jù)清洗的操作詳解,需要的可以參考一下
    2022-03-03

最新評(píng)論