Redis Clusterでデータをパターンで削除する
結論
正攻法はないのでスクリプトを書く
概要
Redisデータをパターンで削除する方法は Redisのパターンに一致するキーを削除
などの記事で紹介されていますが(とはいえ正攻法ではない)、Redis Clusterを使用していると、keyのprefixが同じでもデータがノードに分散してしまって一気に参照や削除するのが難しくなります。
そもそもリリース環境でそんなことをすることはほぼないのですが、開発環境からRedis Clusterを使っているとちょっと困ります。
間違えてぶっ壊れたデータを保存してしまった場合にえいやっと削除したいときにどうするか。
スクリプト
結果から言うと、こういうスクリプトを書くのが一番早いです。
#! /usr/bin/env python
import sys
import commands
print sys.argv
# ノードは自分で設定してくだしあ
nodes = [
"localhost:10000",
"localhost:10001",
"localhost:10002"
]
pat = sys.argv[1]
for node in nodes:
host, port = node.split(":")
output = commands.getoutput("redis-cli -h {host} -p {port} -c keys {pat}".format(host=host,port=port,pat=pat))
result = filter(lambda s:len(s) > 0, output.split("\n"))
print host, port
print result
for key in result:
print commands.getoutput("redis-cli -h {host} -p {port} -c del {key}".format(host=host,port=port,key=key))
こんなふうに使います
./delete-pat hoge:fuga:*
こちらからは以上です。
Author And Source
この問題について(Redis Clusterでデータをパターンで削除する), 我々は、より多くの情報をここで見つけました https://qiita.com/keroxp/items/40eb25b08a8779d71816著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .