Redisの型 リスト型

前回少し触れましたが、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)