キャッシュ値が古い・存在しない原因を調査する
使うタイミング: ユーザーから「プロフィールを更新したのに古い名前が表示される」という報告があった場合 — キャッシュ無効化の問題が疑われます。
前提条件
- 少なくとも読み取り権限のあるRedis URL —
REDIS_URL=redis://:pw@host:6379/0
フロー
-
対象のキーを見つける
user:profile:42*にマッチするキーをスキャンし、それぞれの型とTTLを表示してください。✓ コピーしました→ マッチするキーの一覧 -
格納された値と有効期限を確認する
user:profile:42をGETして値とTTLを表示してください。期待値と比べて古くなっていますか?✓ コピーしました→ 値 + TTL + 判定結果 -
意図的にキャッシュを破棄するそのキー(および関連するlist/setキー)を削除し、次回の読み取り時にアプリが再取得するようにしてください。削除を確認してください。✓ コピーしました→ DELが1以上を返す
結果: 何が古くなっていたか、なぜ古くなっていたかの記録とともに、キャッシュが修正されたことを確認できます。
注意点
- 大規模インスタンスで
KEYS *を実行するとサーバーが停止する — 常にSCANを使用してください(サーバーがscanツールをノンブロッキングカーソルに変換します)。KEYSは絶対に使わないこと