python redis詳細(五)LISTチェーンテーブル配列
6589 ワード
LIST
Redisリストは単純な文字列リストで、挿入順に並べ替えられています.エレメントガイドリストのヘッダー(左)または末尾(右)を追加できます.
pythonのlistに似ています
データ構造におけるチェーンテーブル構造
python redisが提供する方法はコマンドラインとほぼ一致し、具体的な関数と意味は所定のコマンドラインを参照して使用することができ、対応する関数名はコマンド名とほぼ一致する.
コマンド#コマンド#
まず公式の命令を理解し、具体的には以下の通りです.
1
python-redis
python操作redis LISTタイプはいくつかの関数を提供し、関数名はコマンドとほぼ一致し、コマンドを参照して使用することができます.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14. 16.
17.
サンプルプログラム
出力:
備考:ここまでの実験では一部のデータが蓄積されていたので、初回の結果とは少し違うかもしれません
Redisリストは単純な文字列リストで、挿入順に並べ替えられています.エレメントガイドリストのヘッダー(左)または末尾(右)を追加できます.
pythonのlistに似ています
データ構造におけるチェーンテーブル構造
python redisが提供する方法はコマンドラインとほぼ一致し、具体的な関数と意味は所定のコマンドラインを参照して使用することができ、対応する関数名はコマンド名とほぼ一致する.
コマンド#コマンド#
まず公式の命令を理解し、具体的には以下の通りです.
1
BLPOP key1 [key2 ] timeout
リストの最初の要素を移動して取得し、リストに要素がない場合、タイムアウト待ちまたはポップアップ可能な要素が発見されるまでリストをブロックします.2BRPOP key1 [key2 ] timeout
リストの最後の要素を移動して取得し、リストに要素がない場合、タイムアウト待ちまたはポップアップ可能な要素が発見されるまでリストをブロックします.3BRPOPLPUSH source destination timeout
リストから値をポップアップし、ポップアップされた要素を別のリストに挿入して返します.リストに要素がない場合、リストはタイムアウト待ちまたはポップアップ可能な要素が見つかるまでブロックされます.4LINDEX key index
インデックス取得リストの要素5LINSERT key BEFORE|AFTER pivot value
リストの要素の前後に要素6LLEN key
取得リスト長7LPOP key
を挿入リストの最初の要素8LPUSH key value1 [value2]
リストヘッダ9LPUSHX key value
に1つ以上の値を挿入既存のリストヘッダ10LRANGE key start stop
取得リストに1つ以上の値を挿入指定範囲内の要素11LREM key count value
削除リスト要素12LSET key index value
インデックス設定リスト要素の値13LTRIM key start stop
で1つのリストをトリム(trim)します.つまり、リストに指定区間内の要素のみを保持させ、指定区間内でない要素はすべて削除されます.14RPOP key
リストの最後の要素15RPOPLPUSH source destination
リストの最後の要素を除去して取得し、その要素を別のリストに追加し、16RPUSH key value1 [value2]
リストに1つ以上の値17RPUSHX key value
を追加して既存のリストに値を追加します.python-redis
python操作redis LISTタイプはいくつかの関数を提供し、関数名はコマンドとほぼ一致し、コマンドを参照して使用することができます.
1.
lset(name, index, value)
インデックスによる値の設定print rediscli.lset("pm1", 0, "tr1")
2.
llen(name)
name対応リスト要素の個数3.
lindex(name, index)
name対応リストでインデックスに基づいてリスト要素を取得print rediscli.lindex('pm1', 0)
4.
lrange(name, start, end)
name
start,
end,
print rediscli.lrange('pm1', 0, 7)
: ['tr1', 'x2', 'x1', 'tr1', 'x2', 'x1']
5.
lpush(name,values)
list value
print rediscli.lpush('pm1', 'x1', 'x2', 'x3')
print rediscli.lindex('pm1', 0)
:
6
x3
6.
rpush(name, values)
list右側にvaluesを追加print rediscli.lrange('pm1', 0, 7)
print rediscli.rpush('pm1', 'rt1')
print rediscli.lrange('pm1', 0, 7)
:
['tr1', 'x2', 'x1', 'tr1', 'x2', 'x1']
7
['tr1', 'x2', 'x1', 'tr1', 'x2', 'x1', 'rt1']
7.
lpushx(name,value)
リスト左にvalueを追加し、nameが既に存在する場合のみリストの一番左に値を追加8.
rpushx(name, value)
リスト右側にvaluesを追加名前のみが既に存在する場合、リストの一番右側に値を追加9.
linsert(name, where, refvalue, value))
name , ,
where BEFORE AFTER
refvalue, , :
value,
print rediscli.linsert('pm1', 'AFTER','x2', 'A_x2')
print rediscli.lrange('pm1', 0, 9)
:
8
['tr1', 'x2', 'A_x2', 'x1', 'tr1', 'x2', 'x1', 'rt1']
10.
lrem(name, count, value)
name list
count ,
print rediscli.lrem('pm1', 1, 'x1')
print rediscli.lrange('pm1', 0, 9)
:
['tr1', 'x2', 'A_x2', 'tr1', 'x2', 'x1', 'rt1']
11.
lpop(name)
一番左から値を投げ出す12.
rpop(name)
右から値を投げ出すprint rediscli.lpop('pm1')
print rediscli.rpop('pm1')
print rediscli.lrange('pm1', 0, 9)
:
tr1
rt1
['x2', 'A_x2', 'tr1', 'x2', 'x1']
13.
rpoplpush(src, dst)
,
src, name
dst, name
14.
blpop(keys, timeout)
, pop
keys,redis name
timeout, , , ( ), 0
brpop(keys, timeout)
複数のリストを並べ、右から左へpop対応リストの要素brpoplpush(src, dst, timeout=0)
src, name
dst, name
timeout, src , ( ),0
print rediscli.brpoplpush('pm1', 'pm2')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lrange('pm2', 0, 9)
:
x1
['x2', 'A_x2', 'tr1', 'x2']
['x1']
17.
ltrim(name, start, end)
start-endインデックス間にない値をname対応リストから削除サンプルプログラム
# coding:utf-8
import redis
rediscli = redis.Redis(host='192.168.137.18', port=6379, db=13)
print rediscli.lpush('pm1', 'x1', 'x2', 'x3')
print rediscli.lindex('pm1', 0)
print rediscli.lset("pm1", 0, "tr1")
print rediscli.llen('pm1')
print rediscli.lindex('pm1', 0)
print rediscli.lrange('pm1', 0, 7)
print rediscli.rpush('pm1', 'rt1')
print rediscli.lrange('pm1', 0, 7)
print rediscli.linsert('pm1', 'AFTER','x2', 'A_x2')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lrem('pm1', 1, 'x1')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lpop('pm1')
print rediscli.rpop('pm1')
print rediscli.lrange('pm1', 0, 9)
print rediscli.brpoplpush('pm1', 'pm2')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lrange('pm2', 0, 9)
出力:
備考:ここまでの実験では一部のデータが蓄積されていたので、初回の結果とは少し違うかもしれません
7
x3
True
7
tr1
['tr1', 'x2', 'x1', 'x2', 'A_x2', 'tr1', 'x2']
8
['tr1', 'x2', 'x1', 'x2', 'A_x2', 'tr1', 'x2', 'rt1']
9
['tr1', 'x2', 'A_x2', 'x1', 'x2', 'A_x2', 'tr1', 'x2', 'rt1']
1
['tr1', 'x2', 'A_x2', 'x2', 'A_x2', 'tr1', 'x2', 'rt1']
tr1
rt1
['x2', 'A_x2', 'x2', 'A_x2', 'tr1', 'x2']
x2
['x2', 'A_x2', 'x2', 'A_x2', 'tr1']
['x2', 'x1']