pythonでredisをさわる練習 2

今日はリストの操作をいろいろやってみた。
brpop、blpush、brpoplpushあたりは最初わかりにくかったけど、やってみればどんな動きはわかる。

# coding=utf-8
import redis

r = redis.StrictRedis(host='localhost', port=6379, db=0)

r.delete('beatles')
r.delete('stones')

# rpush: 末尾に追加
r.rpush('beatles', 'john')
r.rpush('beatles', 'paul')
r.rpush('beatles', 'pete')
r.rpush('beatles', 'george')

# lpush: 先頭に追加
r.lpush('stones', 'charlie')
r.lpush('stones', 'ron')
r.lpush('stones', 'keith')
r.lpush('stones', 'mick')

# llen: リストの長さを取得
assert(r.llen('beatles') == 4)

# lrange: 部分リストを取得
beatles = r.lrange('beatles', 0, -1)
assert(beatles == ['john', 'paul', 'pete', 'george'])

# lindex: indexを指定して値を取得
member = r.lindex('beatles', 2)
assert(member == 'pete')

# lset: indexを指定して値を上書き
r.lset('beatles', 2, 'ringo')
member = r.lindex('beatles', 2)
assert(member == 'ringo')

# lpop: リストの先頭の要素を返してリストからは削除
lpopped = r.lpop('beatles')
assert(lpopped == 'john')

# rpop: リストの末尾の要素を返して、リストからは削除
rpopped = r.rpop('beatles')
assert(rpopped == 'george')

# blpop: 最初のキーに対してlpop
lpopped = r.blpop(['stones', 'beatles'], 0)
assert(lpopped == ('stones', 'mick'))

# blpop: キーに値がない場合はtimeout秒ブロックする
lpopped = r.blpop(['kinks', 'faces'], 1)
assert(lpopped is None)

# brpop: 最初のキーに対してrpop
rpopped = r.brpop(['stones', 'beatles'], 0)
assert(rpopped == ('stones', 'charlie'))

# brpop: キーに値がない場合はtimeout秒ブロックする
rpopped = r.brpop(['kinks', 'faces'], 1)
assert(rpopped is None)


# rpoplpush: 一番目のリストの末尾の要素を返してそのリストから削除し、2番めのリストの先頭にその値を追加する。
r.brpoplpush('beatles', 'stones')

beatles = r.lrange('beatles', 0, -1)
assert(beatles == ['paul'])

stones = r.lrange('stones', 0, -1)
assert(stones == ['ringo', 'keith', 'ron'])


参考:Command reference – Redis
参考:コマンドリファレンス ― redis 2.0.3 documentation