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