前回少し触れましたが、Redisには単一のデータ以外にも様々なデータ型が用意されています。
全てのコマンドについては説明できませんのが、基本的にはRedisコマンドを小文字にしたものがメソッドとして提供されています。リスト型のRedisコマンドの詳細は以下ドキュメントを参考にしてください。
http://redis.shibu.jp/commandreference/lists.html
Redisのリスト型
Redisのリスト型は文字列のみサポートしています。要素を挿入する際は、先頭、何らかの要素の前後、位置を指定することができます。また範囲を指定して値を取得したり削除することができます。また、Redisのリストを応用すると簡単にジョブキューを実装することが可能になります。
要素の挿入
リストは最初の要素を挿入した際に作成されます。lpushで先頭に要素を、linsertで指定した要素の前後に要素を挿入することができます。
import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) # 要素を作成する r.lpush('L01', 'AAA') # 複数要素を先頭に追加する r.lpush('L01', 'BBB', 'CCC') # 要素AAAの後ろに要素XXXを挿入する r.linsert('L01', 'after', 'AAA', 'XXX') # 要素CCCの前に要素YYYを挿入する r.linsert('L01', 'before', 'CCC', 'XXX')
値の参照
lindexで指定したインデックスの要素を取得することができます。また、lrangeで範囲で取得することができます。lrangeの引数で開始と終了インデックスを指定しますが、終了インデックスも含む点に注意してください。リストの全ての要素を取得する際は0と-1を指定します。
import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) # 0番めの要素を取得 r.lindex('L01', 0) # b'XXX' # 0番目から1番目の要素を取得 r.lrange('L01', 0, 1) # 全件取得する r.lrange('L01', 0, -1)
削除
lremメソッドでリストの要素を削除することができます。
r.lrem('L01', value='AAA', count=1)
引数に削除する値と、削除する件数をしていします。件数を指定するのは、リストが重複要素を許容するためです。
トリミング
ltrimメソッドで指定範囲外を削除することができます。例えば、0番目から1番目以外を削除する場合は以下のように記述します。
r.ltrim('L01', 0, 1)