【Redis】Redisとは?インメモリKVSを初心者向けに解説

Redis

こんにちは、かつコーチです。

「Redisってキャッシュに使うらしいけど、MySQLとかPostgreSQLと何が違うの?」

そんな疑問を持ったことはないでしょうか。

私自身、初めてRedisという名前を聞いたときは、「もう1つのデータベースが増えただけ」くらいにしか思っていませんでした。

ですが実際に触ってみると、RDBMS(Relational Database Management System、行と列の表形式でデータを管理するデータベース)とは根本的に発想が違う道具だと分かります。

この記事では、Redisの正体と、MySQLなどのRDBMSとの違いを初心者向けに整理します。

これまで学んできたSQL/DBシリーズの中でも、Redisは少し異色の存在です。

その理由も含めて、じっくり解説していきます。

Redisとは何か

インメモリKVSという仕組み

Redis(Remote Dictionary Server)は、データをディスクではなくメモリ(RAM)上に保持するKVS(Key-Value Store、キーと値のペアでデータを管理する仕組み)です。

この「メモリ上にデータを保持する」という性質が、Redisを理解する上で最も重要なポイントです。

MySQLやPostgreSQLのようなRDBMSは、データを主にディスク(HDD/SSD)に保存し、必要に応じてメモリにキャッシュしながら読み書きします。

一方Redisは、原則としてすべてのデータをメモリ上に載せた状態で動作します。

メモリへのアクセスは、ディスクへのアクセスに比べて桁違いに高速です。

一般的に、ディスクアクセスがミリ秒単位の待ち時間を伴うのに対し、メモリアクセスは1ミリ秒以下で完了するとされています(ninja-school「Redis入門!キャッシュの仕組みやメリット」)。

この速度差こそが、Redisが「速いデータベース」と呼ばれる理由です。

RDBMSとの根本的な違い

ここまで学んできたMySQLやPostgreSQLは、テーブル・行・列という構造でデータを管理し、JOINや複雑なWHERE条件で柔軟にデータを検索できるのが強みでした。

Redisはこれとはまったく異なるアプローチを取ります。

観点RDBMS(MySQL等)Redis
データの保存先主にディスク主にメモリ
データ構造テーブル(行・列)キーと値(KVS)
得意なこと複雑な検索・集計・整合性の担保高速な読み書き・一時的なデータ保持
検索方法SQL(SELECTJOIN等)キーを指定した直接アクセスが基本
永続化標準で行うオプション(設定次第)

表を見て分かる通り、RedisはSQLで複雑な検索をするための道具ではありません。

「特定のキーに対応する値を、とにかく速く読み書きする」ことに特化した道具です。

そのため、Redisは「RDBMSの代わり」ではなく、「RDBMSと組み合わせて使う相棒」という位置づけになります。

なぜRedisが必要なのか

RDBMSだけでは速度が足りない場面がある

Webアプリケーションを運用していると、同じデータに対して大量のアクセスが集中する場面が出てきます。

例えばECサイトのセール開始直後や、チケット予約サイトの受付開始直後などです。

こうした場面で毎回MySQLにクエリを投げていると、ディスクI/Oがボトルネックになり、レスポンスが遅延したり、最悪の場合サーバーがダウンしたりします。

Redisは、こうした「一度調べた情報を一時的に保存し、次回以降高速に取り出す」というキャッシュの仕組みに強みがあり、大量同時アクセスが発生する場面で真価を発揮します(ninja-school「Redisをキャッシュとして使う基本ガイド」)。

つまりRedisは、RDBMSへの負荷を減らしつつ、ユーザーには高速なレスポンスを返すための「緩衝材」のような役割を担います。

キャッシュ以外にもある代表的な用途

Redisは単なるキャッシュサーバーだと思われがちですが、実際にはそれだけではありません。

  • List・Hash・Set・Sorted Setといった多様なデータ構造を扱える
  • ログイン状態などを管理するセッションストアとして使える
  • Pub/Sub(発行/購読モデルによるメッセージ配信)でリアルタイム通知の基盤になる

これらの用途については、このシリーズの以降の記事(R03〜R05)で詳しく扱っていきます。

まずは「Redis=速いキャッシュ専用ツール」という理解から一歩進めて、「メモリ上で動く汎用的なデータストア」という理解に更新しておいてください。

Redisを使う上での注意点

メモリ上にあるということはデータが消える可能性がある

Redisの最大の特徴である「メモリ上で動作する」という性質は、裏を返せばサーバーを再起動するとデータが消える可能性があるということでもあります。

私が初めてRedisを検証環境で触ったとき、サーバーの再起動テストをした後にセッションデータがすべて消えていて、一瞬「バグか」と焦った経験があります。

これはバグではなく、Redisの仕様通りの挙動です。

RedisにはRDB(スナップショット形式でディスクに保存する永続化方式)やAOF(Append Only File、実行したコマンドを記録して復元する永続化方式)といった永続化オプションがありますが、デフォルト設定のままでは想定通りに永続化されないケースがあります。

「消えても困らないキャッシュデータ」なのか、「消えると困る重要なデータ(セッションなど)」なのかを意識して、永続化の設定を検討する必要があります。

この点は、後続のTTL戦略・セッション管理の記事で詳しく扱います。

RDBMSを置き換える道具ではない

Redisの速さに惹かれて、「もうRDBMSはいらないのでは」と考えてしまう初学者は少なくありません。

しかし、RedisにはJOINのような複雑なリレーション検索や、トランザクションによる厳密な整合性担保の仕組みが、RDBMSほど充実していません。

注文データや会員情報のような「正確に、長期間保存しなければならないデータ」はRDBMSに任せ、「一時的に、とにかく速く読み書きしたいデータ」はRedisに任せる、という役割分担が実務での基本的な考え方です。

まとめ

この記事のポイント

  • Redisはメモリ上でデータを管理するインメモリKVSであり、RDBMSとは根本的に異なる仕組みを持つ
  • メモリアクセスの速さを活かし、キャッシュ・セッション管理・Pub/Subなど多様な用途で使われる
  • メモリ上で動作するため、再起動でデータが消える可能性がある点に注意が必要
  • RedisはRDBMSの置き換えではなく、役割分担して組み合わせる「相棒」として使うのが基本

次に読むべき記事

  • Redisのインストールと基本コマンド(GET・SET・EXPIRE)
  • Redisのデータ構造(List・Hash・Set・Sorted Set)の使い分け
  • Redisをキャッシュとして使う:TTL戦略の基本

タグ: Redis, 初心者向け, 入門

タイトルとURLをコピーしました