「Redisって何?」「インメモリデータベースってどういうこと?」
Webアプリケーション開発を学んでいると出てくるRedis(レディス)。名前は聞いたことがあっても、具体的に何なのかわからないという方も多いのではないでしょうか。
この記事では、Redisとは何か、どんな場面で使われるのか、初心者の方にもわかりやすく解説します。
Redisとは?
Redis(レディス)は、データをメモリ上に保存する高速なデータベースです。正式名称は「Remote Dictionary Server」で、その名の通り「辞書(キーと値のペア)」形式でデータを管理します。
2009年にイタリアのエンジニア、サルバトーレ・サンフィリッポによって開発されました。オープンソースソフトウェアとして公開されており、無料で使用できます。
インメモリデータベースとは
Redisの最大の特徴は、インメモリ(in-memory)であることです。
通常のデータベース(MySQLなど)は、データをハードディスクやSSDに保存します。一方、Redisはデータをメモリ(RAM)上に保存します。
メモリへのアクセスは、ディスクへのアクセスよりも数十倍〜数百倍高速です。そのため、Redisは非常に速いデータの読み書きが可能になります。
Redisの主な特徴
Redisが多くの開発現場で採用されている理由を見ていきましょう。
1. 圧倒的な高速性
データをメモリ上で処理するため、ミリ秒単位での高速なレスポンスが可能です。リアルタイム性が求められるアプリケーションに最適です。
2. シンプルなデータ構造
Redisはキーバリュー型のデータベースです。「キー(名前)」と「値(データ)」のペアでデータを保存します。
# キーと値の例
user:1001 → "田中太郎"
session:abc123 → "ログイン中"
cache:homepage → "<html>...</html>"
SQLのような複雑なクエリは不要で、シンプルな操作でデータを扱えます。
3. 多様なデータ型をサポート
単純な文字列だけでなく、さまざまなデータ構造をサポートしています。
- String(文字列):最も基本的なデータ型
- List(リスト):順序付きのデータの集まり
- Set(セット):重複のないデータの集まり
- Hash(ハッシュ):フィールドと値のペアの集まり
- Sorted Set(ソート済みセット):スコア付きのデータの集まり
これらを活用することで、ランキング機能やタイムライン機能なども効率的に実装できます。
4. データの永続化にも対応
「メモリ上のデータは、サーバーを再起動したら消えるのでは?」と思うかもしれません。
Redisにはデータを永続化する機能が備わっています。定期的にスナップショット(データの状態を記録)を取ったり、操作ログを記録したりして、再起動後もデータを復元できます。
Redisの主な使いどころ
Redisは、その高速性を活かしてさまざまな場面で使われています。
1. キャッシュ
最も一般的な使い方です。
たとえば、MySQLから取得したデータをRedisにキャッシュ(一時保存)しておくと、次回のアクセスでは高速なRedisからデータを返せます。データベースへの負荷を減らし、レスポンス速度を向上させられます。
# キャッシュの流れ
1. ユーザーがページを表示
2. まずRedisにキャッシュがあるか確認
3. あれば → Redisから即座に返す(高速)
4. なければ → MySQLから取得してRedisに保存
2. セッション管理
Webアプリケーションのログイン状態を管理するセッション情報の保存に使われます。
複数のサーバーで運用している場合でも、Redisに共通のセッション情報を保存することで、どのサーバーにアクセスしても同じログイン状態を維持できます。
3. リアルタイムランキング
Sorted Set(ソート済みセット)を使うと、スコア付きのデータを効率的に管理できます。
ゲームのスコアランキングや、SNSのトレンドランキングなど、リアルタイムで更新されるランキング機能の実装に最適です。
4. メッセージキュー
Listデータ型を使って、メッセージキュー(処理待ちの行列)を実装できます。
たとえば、メール送信やプッシュ通知など、すぐに処理しなくてもよいタスクを一旦キューに入れておき、バックグラウンドで順番に処理するといった使い方ができます。
5. リアルタイム分析
アクセスログやクリック数など、大量のイベントデータをリアルタイムで集計する用途にも使われます。
RedisとMySQLの違い
「データベースならMySQLがあるのに、なぜRedisが必要なの?」という疑問に答えるため、両者の違いを整理しましょう。
| 比較項目 | Redis | MySQL |
|---|---|---|
| データの保存先 | メモリ(RAM) | ディスク(HDD/SSD) |
| 速度 | 非常に高速 | 普通 |
| データ構造 | キーバリュー型 | リレーショナル(テーブル) |
| クエリ | シンプルなコマンド | SQL |
| データの永続性 | オプション | デフォルトで永続化 |
| 主な用途 | キャッシュ、セッション管理 | メインのデータ保存 |
RedisはMySQLの代わりではなく、補完するものです。
メインのデータはMySQLに保存し、高速なアクセスが必要なデータはRedisにキャッシュするという組み合わせが一般的です。
Redisのメリット・デメリット
メリット
- 圧倒的な高速性:ミリ秒単位のレスポンス
- シンプルな操作:SQLを覚えなくても使える
- 多様なデータ構造:用途に応じて使い分けられる
- スケーラビリティ:レプリケーションやクラスタリングに対応
- 無料:オープンソースで自由に使える
デメリット
- メモリ使用量:データが増えるとメモリも必要になる
- データ永続性:設定によっては再起動でデータが消える
- 複雑なクエリが苦手:SQLのようなJOINやGROUP BYは不可
- 容量の制限:メモリ容量以上のデータは扱いにくい
Redisを使うには
Redisを使う方法はいくつかあります。
ローカル環境にインストール
学習目的なら、自分のPCにRedisをインストールして試せます。
# Macの場合(Homebrew)
brew install redis
brew services start redis
# Ubuntuの場合
sudo apt update
sudo apt install redis-server
クラウドサービスを利用
本番環境では、クラウドサービスのマネージドRedisを使うのが一般的です。
- AWS ElastiCache for Redis
- Amazon MemoryDB for Redis
- Azure Cache for Redis
- Redis Cloud(Redis公式のクラウドサービス)
マネージドサービスなら、バックアップやスケーリングを自動で行ってくれます。
まとめ
この記事で解説した内容をまとめます。
| 項目 | 内容 |
|---|---|
| Redisとは | メモリ上にデータを保存する高速データベース |
| 読み方 | レディス |
| 特徴 | キーバリュー型、インメモリ、高速 |
| 主な用途 | キャッシュ、セッション管理、ランキング、メッセージキュー |
| MySQLとの関係 | 代替ではなく補完(組み合わせて使う) |
| 料金 | オープンソースで無料(クラウドは有料) |
Redisは、Webアプリケーションのパフォーマンスを向上させるための重要なツールです。特に「遅い」と感じるサイトの高速化には欠かせない存在になっています。
最初は「キャッシュとして使う」というシンプルな用途から始めてみてはいかがでしょうか。実際に使ってみると、その速さを実感できるはずです。