Redis (In-Memory Key-Value Store)(レディス)
Salvatore Sanfilippo 2009年公開のIn-Memory データストア。String / List / Hash / Set / Sorted Set 等のリッチデータ構造、世界最高速 KV ストアの代表格。
概要
Redis はSalvatore Sanfilippo (イタリア) が2009年に個人プロジェクトとして開発・公開したIn-Memory データストア。「REmote DIctionary Server」の意。当初BSD ライセンス、後にAntirez (Sanfilippo) がRedis Labs (現Redis Inc.) に参加。In-Memory + 永続化 (RDB スナップショット / AOF Append-Only File) のハイブリッド設計で、100,000+ QPS・1ms 未満レイテンシ・世界最速KV ストアとして広範採用。2024年3月Redis Inc. がライセンス変更で物議、Linux Foundation が Valkey フォークを発表。
Redis 主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 2009-05 | 初期版公開 (Antirez) |
| 2010 | VMware (Pivotal) スポンサー化 |
| 2011 | Redis Cluster 開発開始 |
| 2015-04 | Redis 3.0 (Cluster GA) |
| 2017-10 | Redis 4.0 (モジュール化・LFU) |
| 2018-10 | Redis 5.0 (Stream データ型) |
| 2020-04 | Redis 6.0 (TLS / RESP3) |
| 2020-06 | Antirez 引退 |
| 2022-04 | Redis 7.0 (Functions / ACL v2) |
| 2024-03 | ライセンス変更 (RSALv2 + SSPLv1) |
| 2024-04 | Linux Foundation Valkey 発表 |
| 2024-08 | Redis 7.4 / Valkey 7.2 |
データ構造
Redis の特徴は単純KV ではなく「リッチデータ構造」:
| 種別 | 用途 |
|---|---|
| String | 単純文字列・Counter |
| List | キュー (Push/Pop) |
| Hash | フィールド付オブジェクト |
| Set | 一意な要素集合 |
| Sorted Set | ランキング (順序付Set) |
| Stream | Event Source (Kafka類似) |
| Hash + Tile | GeoSpatial |
| Bitmap | bit 単位操作 |
| HyperLogLog | カーディナリティ近似 |
| Pub/Sub | メッセージング |
主要使用パターン
| パターン | 用途 |
|---|---|
| Cache | Webアプリ高速化 (世界共通) |
| Session Store | Web セッション保存 |
| Queue / Job Queue | Bull/Sidekiq バックエンド |
| Rate Limiter | API 制限 |
| Real-time Analytics | 即時集計 |
| Leaderboard | ゲームランキング |
| Pub/Sub | チャット・通知 |
| Stream | Event Sourcing |
| Geo Search | 地図サービス |
性能ベンチマーク
| 操作 | QPS |
|---|---|
| GET (1KB) | 150,000 / 秒 |
| SET | 130,000 / 秒 |
| LPUSH / RPUSH | 110,000 / 秒 |
| HSET | 100,000 / 秒 |
| Pipelined GET (1000) | 800,000 / 秒 |
C で書かれ・シングルスレッド (元来)・In-Memory・ネットワーク I/O 最適化で「Faster Than Memcached」を実現。Redis 6+ では Multi-Threaded I/O も対応。
永続化 (Persistence)
In-Memory だが永続化機構を持つ:
RDB (Redis Database)
- 定期的なフルスナップショット
- ファイル圧縮率高
- 復元高速
- 障害時に多少のデータロス
AOF (Append-Only File)
- すべての書込み操作をログ追記
- データ損失最小化
- ファイルサイズ大
- BGREWRITEAOF でコンパクト化
2024年ライセンス争奪
2024年3月20日Redis Inc. が「BSD」から「SSPLv1 + RSALv2」(Server Side Public License + Redis Source Available License) へライセンス変更。クラウドプロバイダの「ただ乗り」防止が動機:
- AWS / Google Cloud / Azure はRedis as a Service 提供禁止
- 但しユーザは引き続き無料使用可
→ コミュニティ反発・Linux Foundation が4月9日「Valkey」フォーク発表・AWS / Google Cloud / Oracle / Snap / Ericsson 等が支援。2024年9月Valkey 7.2 リリース、Redis と互換性を維持しつつ独立開発継続。
関連用語との違い
- vs Memcached: 単純KV / リッチ
- vs PostgreSQL: 永続的RDBMS / In-Memory
- vs MongoDB: ドキュメント / KV
- vs DynamoDB: AWS マネージド / OSS
FAQ
Q1: AWS でRedis 使う? A: AWS ElastiCache for Redis から 2024年Valkey 統合へ。新規はValkey 推奨だが、既存Redis 7.0 まで使用可。AWS は Valkey 主要支援企業。
Q2: メモリ容量制限は? A: 単インスタンス最大数百GB。それ以上はRedis Cluster (シャーディング) で水平スケール。Pinterest / Twitter は数TB 規模。
Q3: Valkey は Redis 互換? A: Redis 7.2.4 から フォーク・互換性100%。設定ファイル / クライアント / コマンド 全て同じ。AWS / GCP / Azure はValkey 主流化見込み。