python 3操作redis List(リスト)インスタンス詳細
27473 ワード
redisをインストールしていないなら私の別のblogを見ることができて、資源と方法があります
まずpython 3操作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)
dalaoが完全なコードを直接見たい場合はgithubに移動してください.https://github.com/dangsh/pythonPra/blob/master/redisGit/redisTest.py
次に、具体的な例の詳細とコードを示します.
①lrange(key,start,stop)は、リストkeyで指定した区間内の要素を返し、区間はオフセット量startとstopで指定します.下付き(index)パラメータstartとstopはいずれも0をベースとしており、すなわち、リストの最初の要素を0で表し、リストの2番目の要素を1で表している.
②lpush(key,value)リストkeyのヘッダに1つ以上の値valueを挿入複数のvalue値がある場合、各value値を左から右の順にヘッダに挿入キーが存在しない場合、空のリストが作成されLPUSH操作が実行キーが存在するがリストタイプではない場合、エラーが返される
③rpush(key,value)リストkeyの表の末尾(右端)に1つ以上の値valueを挿入します.複数のvalue値がある場合、各value値は左から右の順にテーブルの最後に挿入されます.keyが存在しない場合、空のリストが作成され、RPUSH操作が実行されます.keyが存在するがリストタイプではない場合、エラーが返されます.
④lpop(key)は、リストkeyのヘッダ要素を削除して返します.
⑤rpop(key)は、リストkeyの末尾要素を除去して返します.
⑥blpop(key)Blpopコマンドは、リストの最初の要素を取り出して取得します.リストに要素がない場合は、タイムアウト待ちまたはポップアップ可能な要素が見つかるまでリストをブロックします.リストが空の場合は、Noneを返します.そうでなければ、2つの要素を含むリストを返します.1つ目の要素はポップアップ要素が属するkeyで、2つ目の要素はポップアップ要素の値です.
⑦brpop(key)Brpopコマンドは、リストの最後の要素を移動して取得し、リストに要素がない場合は、タイムアウト待ちまたはポップアップ可能な要素が発見されるまでリストをブロックします.指定した時間内に要素がポップアップされていない場合は、Noneと待機時間が返されます.逆に、2つの要素を含むリストを返します.1つ目の要素はポップアップされた要素が属するkeyで、2つ目の要素はポップアップされた要素の値です.
⑧brpoplpush(source,destination,timeout)コマンドはリストから値をポップアップし、ポップアップした要素を別のリストに挿入して返す.リストに要素がない場合、リストはタイムアウト待ちまたはポップアップ可能な要素が見つかるまでブロックされます.指定した時間内に要素がポップアップされていない場合は、Noneと待機時間が返されます.逆に、2つの要素を含むリストを返します.1つ目の要素はポップアップされた要素の値で、2つ目の要素は待機時間が長いです.
⑨lindex(key,index)
リスト内の要素をインデックスで取得します.負の数の下付き文字を使用して、リストの最後の要素を-1で表すこともできます.
⑩linsert(key,before|after,privot,value)は、リストの要素の前後に要素を挿入するために使用されます.指定した要素がリストに存在しない場合、アクションは実行されません.リストが存在しない場合は、空のリストとみなされ、何も実行されません.
①①llen(key)はリストの長さを返します.リストkeyが存在しない場合、keyは空のリストとして解釈され、0を返します.keyがリストタイプでない場合は、エラーが返されます.
①②lpushx(key)既存のリストヘッダに1つ以上の値を挿入し、リストが存在しない場合は無効です.lpushとの違いは、lpushxがリストが存在しない場合に無効に動作し、lpushがリストを作成することです.
①③lrem(key,value,count)パラメータCOUNTの値に基づいて、リストからパラメータVALUEに等しい要素を除去します.COUNTの値は、count>0:ヘッダーからヘッダーに向かって検索し、VALUEに等しい要素を削除します.数はCOUNTです.count<0:テーブルの最後からヘッダへの検索を開始し、COUNTの絶対値であるVALUEに等しい要素を除去します.count=0:テーブルのVALUEに等しいすべての値を削除します.除去された要素の数を返します.リストが存在しない場合は0を返します.
①④lset(key,index,value)リストkeyの下にindexと表示される要素の値をvalueに設定します.indexパラメータが範囲外であるか、空のリスト(keyが存在しない)に対してLSETを行うと、エラーが返されます.
①⑤ltrim(key,start,stop)は、1つのリストをトリム(trim)します.つまり、リストに指定区間内の要素のみを残し、指定区間内でない要素はすべて削除されます.例を挙げると、コマンドLTRIMリスト0 2が実行され、リストリストの最初の3つの要素のみが保持され、残りの要素がすべて削除されることを示します.下付き(index)パラメータstartとstopはいずれも0をベースとしており、すなわち、リストの最初の要素を0で表し、リストの2番目の要素を1で表している.負の数の下付き記号を使用して、リストの最後の要素を-1、リストの最後から2番目の要素を-2で表すこともできます.keyがリストタイプでない場合、エラーが返されます.
①⑥rpoplpush(source,destination)リストsourceの最後の要素(末尾要素)をポップアップし、クライアントに返します.sourceポップアップ要素をリストdestinationに挿入し、destinationリストのヘッダ要素とします.
①⑦rpushx(key,value)は、keyが存在し、リストである場合にのみ値valueをリストkeyのテーブルの末尾に挿入する.RPUSHコマンドとは逆に、keyが存在しない場合、RPUSHXコマンドは何もしません.
終わりました~後でredisの他のデータ型の操作を更新して更に1つの完全なコードの住所を貼りますhttps://github.com/dangsh/pythonPra/blob/master/redisGit/redisTest.py
まずpython 3操作redisにどのようなコマンドがあるか見てみましょう
dalaoが完全なコードを直接見たい場合はgithubに移動してください.https://github.com/dangsh/pythonPra/blob/master/redisGit/redisTest.py
次に、具体的な例の詳細とコードを示します.
①lrange(key,start,stop)は、リストkeyで指定した区間内の要素を返し、区間はオフセット量startとstopで指定します.下付き(index)パラメータstartとstopはいずれも0をベースとしており、すなわち、リストの最初の要素を0で表し、リストの2番目の要素を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)リストkeyのヘッダに1つ以上の値valueを挿入複数のvalue値がある場合、各value値を左から右の順にヘッダに挿入キーが存在しない場合、空のリストが作成されLPUSH操作が実行キーが存在するがリストタイプではない場合、エラーが返される
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)リストkeyの表の末尾(右端)に1つ以上の値valueを挿入します.複数の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を返します.そうでなければ、2つの要素を含むリストを返します.1つ目の要素はポップアップ要素が属するkeyで、2つ目の要素はポップアップ要素の値です.
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と待機時間が返されます.逆に、2つの要素を含むリストを返します.1つ目の要素はポップアップされた要素が属するkeyで、2つ目の要素はポップアップされた要素の値です.
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と待機時間が返されます.逆に、2つの要素を含むリストを返します.1つ目の要素はポップアップされた要素の値で、2つ目の要素は待機時間が長いです.
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)既存のリストヘッダに1つ以上の値を挿入し、リストが存在しない場合は無効です.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:テーブルの最後からヘッダへの検索を開始し、COUNTの絶対値であるVALUEに等しい要素を除去します.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)は、1つのリストをトリム(trim)します.つまり、リストに指定区間内の要素のみを残し、指定区間内でない要素はすべて削除されます.例を挙げると、コマンドLTRIMリスト0 2が実行され、リストリストの最初の3つの要素のみが保持され、残りの要素がすべて削除されることを示します.下付き(index)パラメータstartとstopはいずれも0をベースとしており、すなわち、リストの最初の要素を0で表し、リストの2番目の要素を1で表している.負の数の下付き記号を使用して、リストの最後の要素を-1、リストの最後から2番目の要素を-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)は、keyが存在し、リストである場合にのみ値valueをリスト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)) # []
終わりました~後でredisの他のデータ型の操作を更新して更に1つの完全なコードの住所を貼りますhttps://github.com/dangsh/pythonPra/blob/master/redisGit/redisTest.py