[解決済み] Redis Python - 特定のパターンに従ってすべてのキーを削除する方法 pythonで、pythonのイテレーションなし
2022-02-15 09:26:44
質問内容
私は、redis のキャッシュの一部を処理するための django 管理コマンドを作成しています。基本的に、私は特定のパターン(例えば、 "prefix:*")に一致するすべてのキーを選択し、それらを削除する必要があります。
cliでできることは知っています。
redis-cli KEYS "prefix:*" | xargs redis-cli DEL
しかし、これをアプリの中から行う必要があるのです。そこで、pythonのバインディングを使う必要があります(私はpy-redisを使っています)。私はリストをdeleteに送り込もうとしましたが、失敗しました。
from common.redis_client import get_redis_client
cache = get_redis_client()
x = cache.keys('prefix:*')
x == ['prefix:key1','prefix:key2'] # True
# ♪そして今
cache.delete(x)
# return 0 ... 何も削除されない
xを反復処理できることは知っている。
for key in x:
cache.delete(key)
しかし、それではredisの素晴らしいスピードが失われ、その能力を誤って利用してしまうことになります。py-redisで、イテレーションやcliを使わないpythonicな解決策はないのでしょうか?
ありがとうございます。
解決方法は?
と思います。
for key in x: cache.delete(key)
はなかなかいい感じで簡潔です。
delete
は本当に一度に一つのキーを必要とするので、ループする必要があります。
そうでなければ、この 前の質問と回答 は、luaを使った解決策を紹介しています。
関連
-
PythonはWordの読み書きの変更操作を実装している
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み] Redisですべてを削除するには?
-
[解決済み] Redisを使用してパターンに一致するキーをアトミックに削除する方法
-
[解決済み] 利用可能なすべてのキーを取得するためのRedisコマンド?
-
[解決済み】Pythonで辞書のキーをリストとして返すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
PythonによるExcelファイルの一括操作の説明
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み] データ型が理解できない
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] Redisを使用してパターンに一致するキーをアトミックに削除する方法