小ネタです。
以前、PythonからRedisを操作するredis-pyについて紹介しましたが、今回はこのredis-pyで複数の値を一括して値を設定・削除する方法についてです。
準備
こちら↓の記事を参考にRedisコンテナの追加・redis-pyのインストールを行ってください。
で、接続します。
import redis conn = redis.StrictRedis(host='localhost', port=6379)
複数の値を更新 (mset)
msetメソッドで、引数に辞書を渡すことで一括更新できます。成功すると"True"が返ります。
ret = con.mset({'key1': 'value1', 'key2': 'value2'}) print(ret) # True
複数の値を取得 (mget, scan)
msetと対になるmgetメソッドにキーのリストを渡すと、値を一括取得できます。
values = con.mget(['key1', 'key2']) print(values) # [b'value1', b'value2']
あるパターンのキー (例えば"key*") の値を取得する場合、最初にキーをscanしてからmgetします。
setが返ってきますが、2つ目がキーのリストとなります。1つ目の値は次に読み込むべきインデックスです (count
引数が設定されていない場合は0) 。
keys = con.scan(match='key*') print(keys) # (0, [b'key2', b'key1']) # keys = con.scan(match='key*', count=1) # print(keys) # (1, [b'key2']) values = con.mget(keys[1]) print(values) # [b'value2', b'value1']
複数の値を削除 (delete)
値の削除はdeleteメソッドで、引数にキーのリストを渡すことで削除できます。
_, keys = con.scan(match='key*') ret = con.delete(*keys) print(ret) # 2 print(con.mget(keys)) # [None, None]