pythonでredisをさわる練習 3
昨日に続いて、pythonでredisのセットを操作してみた。
リストよりわかりやすい。
# coding=utf-8 import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) r.delete('alphabet') r.delete('digit') r.delete('character') # sadd: キーに対応するセットに値を追加する r.sadd('alphabet', 'A', 'B', 'C', 'D') r.sadd('digit', 1, 2, 3, 4, 'Z') # smembers: キーに対応するセットのすべての値を返す values = r.smembers('alphabet') assert(values == {'A', 'B', 'C', 'D'}) # srem: キーに対応するセットから値を削除する r.srem('alphabet', 'D') values = r.smembers('alphabet') assert(values == {'A', 'B', 'C'}) # spop: キーに対応するセットからランダムに値を取り出す value = r.spop('alphabet') assert(value in ['A', 'B', 'C']) # scard: キーに対応するセットの要素数を取り出す count = r.scard('alphabet') assert(count == 2) # smove: セットからセットへ値を移動する r.smove('digit', 'alphabet', 'Z') # sismember: キーに対応するセットに値があるかどうか確認する assert(r.sismember('alphabet', 'Z')) assert(not r.sismember('digit', 'Z')) # sunion: 複数のセットの結合 union_set = r.sunion('alphabet', 'digit') # => set(['A', 'B', '1', '3', '2', '4', 'Z']) assert(len(union_set) == 7) # sunionstore: 複数のセットを結合してredisに格納する r.sunionstore('character', 'alphabet', 'digit') assert(r.scard('character') == 7) # srandmember: ランダムで値を一つ取り出す random = r.srandmember('character') assert(random in union_set) # sinter: 複数のセットの共通セットを返す inter_set = r.sinter('character', 'digit') assert(inter_set == {'1', '2', '3', '4'}) # sinterstore: 複数のセットの共通セットをredisに格納する r.sinterstore('new_digit', 'character', 'digit') assert(r.scard('new_digit') == 4) # sdiff: 複数のセットの差分セットを返す diff_set = r.sdiff('character', 'digit') assert(len(diff_set) == 3) # sdiffstore: 複数のセットの差分セットをredisに格納する r.sdiffstore('new_alphabet', 'character', 'digit') assert(r.scard('new_alphabet') == 3) print 'alphabet: ', r.smembers('alphabet') print 'digit', r.smembers('digit') print 'new_alphabet: ', r.smembers('new_alphabet') print 'new_digit', r.smembers('new_digit') # alphabet: set(['A', 'C', 'Z']) # digit set(['1', '3', '2', '4']) # new_alphabet: set(['A', 'C', 'Z']) # new_digit set(['1', '3', '2', '4'])