Redis にデータを保存するプログラムがあります。名前空間「foo」の下のキーには、任意の数のセットが格納されます。つまりkeys foo:*
、セットのキーのリストが返されます。名前空間内に含まれるすべてのセットから文字列「bar」を削除したいと考えています。基本的に(これはRubyにあります):
redis.keys("foo:*").each do |key|
redis.srem(key, "bar")
end
を使用しているkeys
ため、本番環境での使用が意図されていないため、これは非効率的で原子的ではありません。事前に操作したいセットのキーを持っていない場合、すべてのセットから「バー」を削除するより良い方法はありますか?
それが原子性を処理し、パフォーマンスを向上させる唯一の方法である場合は、Lua スクリプトを使用しても問題ありません。