10
第 10 章
Redis の位置づけと選択基準
この章で学ぶこと
1
Redis と RDB の使い分け
2
Redis と Memcached の比較
3
Redis とメッセージブローカーの比較
4
ライセンスの経緯と Valkey
解説
セクション 1〜9 で学んだこと
データ構造の操作と使い分け
キー設計・メモリ管理・永続化
キャッシュ設計パターンとユースケース
レプリケーション・Sentinel・Cluster
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Redis と RDB の根本的な違い
RDB(リレーショナルデータベース)
ディスクベース、ACID、複雑なクエリ
Redis
インメモリ、高速、データ構造が豊富
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
RDB の強み
ACID 特性
トランザクションの整合性を保証
複雑なクエリ
JOIN・集計・サブクエリ
データの整合性
外部キー制約、スキーマによる型保証
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Redis の強み
低レイテンシ
マイクロ秒単位のレスポンス
豊富なデータ構造
String、Hash、Sorted Set、Stream など
組み込みの機能
TTL、Pub/Sub、アトミック操作
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
図解
RDBMS + Redis の補完関係
RDB を正のデータ、Redis を高速アクセス層として組み合わせる
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Redis を主データベースにすべきでない理由
メモリコスト
ディスクストレージと比較して高い
複雑なクエリの不在
JOIN・集計ができない
永続化の限界
RDB/AOF は RDB エンジンほど堅牢ではない
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
図解
Redis と RDB の使い分け — 判断基準
観点
RDB を選ぶ
Redis を選ぶ
データの整合性
最優先(ACID が必要)
結果整合性で十分
アクセス頻度
低〜中頻度
高頻度・低レイテンシ
データ量
大量(GB〜TB)
比較的少量
クエリの複雑さ
JOIN・集計が必要
キーでの直接アクセス
データの寿命
永続的
一時的・TTL 付き
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Memcached とは
Memcached
シンプルなインメモリキーバリューキャッシュ
マルチスレッド
複数コアを活用
データ型は文字列のみ
構造化データは保持しない
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
図解
Redis と Memcached の比較
観点
Redis
Memcached
データ構造
String, Hash, List 等
文字列のみ
永続化
RDB / AOF
なし
Pub/Sub
あり
なし
スレッドモデル
シングルスレッド
マルチスレッド
メモリ効率
やや低い
高い
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Redis と Memcached の選択基準
Memcached を選ぶ
単純なキャッシュで十分、データ構造が不要
Redis を選ぶ
構造化データ、永続化、Pub/Sub が必要
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
メッセージブローカーの役割
メッセージブローカー
サービス間のメッセージを仲介するシステム
代表例:Kafka、RabbitMQ
Redis も Pub/Sub・Stream でメッセージ配信が可能
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Kafka の特徴
永続的なイベントログ
メッセージをディスクに保持
高スループット
毎秒数百万メッセージを処理可能
用途
イベントソーシング、ログ集約、リアルタイム分析
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
RabbitMQ の特徴
確実なメッセージ配信
受信確認つきのキュー
ルーティング
メッセージの振り分けルールを柔軟に設定
用途
ジョブキュー、ワークフロー制御
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
図解
Redis Pub/Sub・Stream とメッセージブローカー
観点
Pub/Sub
Stream
Kafka
RabbitMQ
永続性
なし
あり
あり(ディスク)
あり(ディスク)
再読み取り
不可
可能
可能
不可
コンシューマーグループ
なし
あり
あり
あり
スループット
高い
高い
非常に高い
中程度
適した規模
小〜中
小〜中
大規模
中規模
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
メッセージブローカーの選択基準
Redis Stream
小〜中規模、既に Redis を使っている場合
Kafka
大規模イベント処理、長期間のメッセージ保持
RabbitMQ
確実な配信、複雑なルーティング
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
図解
技術選定フローチャート
要件に応じた技術選定の判断フロー
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Redis のライセンス変遷
〜2024年2月
BSD 3-Clause(オープンソース)
2024年3月
RSALv2 + SSPLv1(ソースアベイラブル)
2025年5月
AGPLv3 を追加(トリプルライセンス)
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
図解
Redis ライセンスの変遷
BSD から Valkey フォークに至るタイムライン
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
Valkey の誕生と現状
誕生
2024年3月、Linux Foundation がフォーク
ライセンス
BSD 3-Clause(元の Redis と同じ)
支援
AWS、Google Cloud、Oracle
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
図解
Redis と Valkey の比較
観点
Redis 8
Valkey 9
ライセンス
AGPLv3 / RSALv2 / SSPLv1
BSD 3-Clause
API 互換性
—
Redis と互換
拡張機能
コアに統合済み
モジュールとして提供
パフォーマンス
ベースライン
約 8% 高い
クラウド
Redis Cloud
ElastiCache、Memorystore
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
解説
技術選定における判断基準
Redis を選ぶ
JSON・Search 等の統合機能が必要、Redis Cloud を利用
Valkey を選ぶ
BSD ライセンスが必要、AWS/GCP のマネージド環境
いずれも
基本的な KV 操作・データ構造は互換
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ
まとめ
この章のまとめ
✓
Redis と RDB は補完関係、ACID が必要なら RDB
✓
データ構造が不要なら Memcached、それ以外は Redis
✓
小〜中規模なら Redis Stream、大規模なら Kafka
✓
Redis と Valkey はライセンスと機能で判断
✓
データ構造 → キー設計 → 永続化 → キャッシュ → 高可用性 → 技術選定
RDB との比較
Memcached との比較
メッセージブローカー
ライセンスと Valkey
まとめ