コンテンツにスキップ

Redis をいつ使うべきか(と、使うべきでないとき)

問題提起

バックエンドエンジニアは最近、Redis をすべてのアーキテクチャに入れる。しかし一部のアプリケーションは Redis を全く必要としない。Redis が本当に必要な実践的シナリオとは?

Redis が有効なユースケース

ユースケース 理由
セッション管理 高速な KV・TTL 設定・水平スケール対応
レートリミット 原子的なカウンタ操作(INCR + EXPIRE)
キャッシュ(DB クエリ結果) DB 負荷削減・レスポンス高速化
リアルタイム通知・Pub/Sub 軽量なメッセージブローカーとして
分散ロック SET NX PX による排他制御
リーダーボード Sorted Set で O(log N) のランキング
ジオサーチ GEO コマンドで近隣検索

Redis が不要なケース

  • トラフィックが少なく DB が十分速い場合
  • データの永続性・整合性が最重要でキャッシュのズレが許容できない場合
  • 運用コストを増やしたくない小規模プロジェクト

ポイント

  • 「とりあえず Redis」は運用コスト・データ整合性の複雑さを増やす
  • まず DB のインデックス最適化・クエリ改善を先にやる
  • Redis を追加する判断は「何を解決したいか」が明確になってから