Redis れでぃす
簡単に言うとこんな感じ!
Redisは「超高速なメモ帳」みたいなデータベースだよ!普通のデータベースがHDDに書くのに対して、Redisはすべてメモリ(RAM)に保存するから、読み書きが桁違いに速いんだ。Webサイトの「よく使うデータ」を手元に置いておくキャッシュとして大活躍してるよ!
Redisとは
Redis(Remote Dictionary Server)は、データをコンピューターのメモリ上に保存する「インメモリデータベース」です。通常のデータベース(MySQLやPostgreSQLなど)がデータをディスクに書き込むのに対し、Redisはすべてをメモリ上で扱うため、1秒間に数十万〜数百万件という圧倒的な速度で読み書きできます。
単純な「キーとバリューのペア」を保存するだけでなく、リスト・セット・ハッシュ・ソート済みセットなど多彩なデータ型をサポートしているのが特徴です。Webアプリケーションのセッション管理・キャッシュ・リアルタイムランキング・メッセージキューなど幅広い用途で使われており、現代のWebシステムにおいてほぼ欠かせない存在になっています。
オープンソースで開発され、X(旧Twitter)・GitHub・Stackoverflowなど世界中の大規模サービスが採用しています。「速さが正義」な場面でまず名前が挙がるデータベースといえます。
Redisの主なデータ型と使いどころ
| データ型 | 概要 | 代表的な使い方 |
|---|---|---|
| String | テキスト・数値・バイナリ | キャッシュ、カウンター、セッション保存 |
| List | 順序付きの値のリスト | タイムライン、キュー(FIFO/LIFO) |
| Hash | フィールドと値のマップ | ユーザープロファイル、設定情報 |
| Set | 重複なしの集合 | タグ管理、ユニークユーザー数 |
| Sorted Set | スコア付きの順序集合 | リアルタイムランキング、リーダーボード |
| Pub/Sub | メッセージの発行・購読 | チャット、通知、イベント配信 |
| Stream | ログ形式の時系列データ | アクセスログ、センサーデータ |
覚え方:「メモリに住む万能選手」
Redisの名前は Remote Dictionary Server の略。「辞書(Dictionary)」という言葉が示すように、「キー(言葉)でバリュー(意味)を引く」感覚で使えます。辞書は手元(メモリ)に置いてあるから引くのが速い、と覚えましょう!
データの永続化オプション
Redisはメモリで動くため、電源を切るとデータが消える懸念がありますが、2種類の永続化方式で対処できます。
| 方式 | 仕組み | 特徴 |
|---|---|---|
| RDB(スナップショット) | 一定間隔でメモリ内容をファイルに保存 | 軽量・高速、直近データは失われる可能性あり |
| AOF(Append Only File) | 書き込み操作をすべてログに記録 | データ損失が少ない、ファイルサイズが大きくなりがち |
| RDB+AOF | 両方を組み合わせる | バランスが良く本番環境で推奨 |
歴史と背景
- 2009年 — Salvatore Sanfilippo(イタリアの開発者)がスタートアップのボトルネック解消のために開発・公開。「ディスクI/Oが遅すぎる」という実体験から生まれた
- 2010年 — VMware社がSanfilippoをフルタイム雇用し、開発が本格化
- 2013年 — Pivotal社(VMwareのスピンオフ)がスポンサーに
- 2015年 — Redis Labsが設立され、商用サポートおよびクラウドサービス(Redis Cloud)を展開開始
- 2018年 — Redis 5.0でStreamデータ型を追加。Kafkaのような用途にも対応
- 2020年 — Redis 6.0でSSL/TLS対応・ACL(アクセス制御)が強化され、エンタープライズ利用が加速
- 2022年 — Redis 7.0リリース。Redis Functionsなど高度な機能を追加
- 2024年 — ライセンスをBSDからSSPL(Server Side Public License)へ変更し議論を呼ぶ。ValkeydなどのOSSフォークも誕生
他のデータベースとの比較
Redisがどんな場面で選ばれ、どんな場面では他を使うべきかを整理します。
RDBとRedisは「競合」ではなく「補完」
実際の現場では、MySQLやPostgreSQLなどのRDB(リレーショナルデータベース)をメインデータストアとして使い、Redisをキャッシュ層として前段に置くという組み合わせが定番です。「よく参照されるが変わらないデータ」をRedisに保存しておくことで、DBへの問い合わせを減らし全体のレスポンスを改善できます。
[ユーザー] → [Webサーバー] → [Redis(キャッシュ)]
↓ キャッシュミス時のみ
[MySQL(本体DB)]
Redisを選ぶべき判断基準
- レスポンスが1ミリ秒以下を要求される場面(API・認証トークン管理など)
- データが一時的で消えても再生成できる(セッション・キャッシュ)
- ランキング・カウンターのように高頻度に更新されるデータ
- 複数サーバー間でセッションを共有したい(スケールアウト時)
関連する規格・RFC
※ Redisはオープンソースプロジェクトであり、IETF RFCやISO規格として標準化されているものではありません。ただし、Redisへの接続に使われるプロトコルは以下の通り文書化されています。
| 仕様 | 内容 |
|---|---|
| RESP(Redis Serialization Protocol) | RedisクライアントとサーバーがやりとりするためのシリアライズプロトコルRESP3は2020年に改訂 |