Redis (2009年)(レディス)
Redis は2009年Salvatore Sanfilippo (イタリア・antirez) が開発した世界最高速のインメモリ Key-Value Store でPub/Sub・データ構造 (List/Set/Hash/SortedSet)・Lua スクリプト・クラスタリング (Redis Cluster 2015年)・Redis Streams (2018年)採用しキャッシング・セッション管理・リアルタイム分析の標準DB として2024年Stack Overflow Survey で6位採用 (23%) の人気DB。
Redis (2009年)
概要
Redis (REmote DIctionary Server) は2009年5月10日Salvatore Sanfilippo (1977-・イタリア・別名antirez・後Redis Ltd. (旧Redis Labs 2011年-) CEO) が開発した世界最高速のインメモリ Key-Value Store で In-Memory (RAM ベース・100万 ops/sec)・Pub/Sub (Publish/Subscribe メッセージング)・データ構造 (List/Set/Hash/SortedSet/Stream)・Lua スクリプト (2010年-)・クラスタリング (Redis Cluster 2015年3.0)・Redis Streams (2018年5.0・Apache Kafka 競合) ・Redis JSON (RedisJSON モジュール 2019年)・Redis Search (RediSearch・全文検索)・Redis Vector (2023年-・AI ベクトル検索) 採用しキャッシング (Web 高速化)・セッション管理 (Web アプリ)・リアルタイム分析・ジョブキュー・パブサブ メッセージング・リーダーボードの標準DB として2024年Stack Overflow Survey で6位採用 (23%) の人気DB。Redis 7.4 (2024年最新)・2024年Redis Inc. (旧Redis Labs) がライセンスをRSALv2/SSPL へ変更で論争・Valkey (Linux Foundation オープンソースフォーク 2024年3月) 派生。
主な特徴・仕組み
- 発表: 2009年5月10日Salvatore Sanfilippo
- 元代名: REmote DIctionary Server
- 開発者: Salvatore Sanfilippo (イタリア・「antirez」ニックネーム・後Redis Labs CEO・2020年退社)
- 言語: ANSI C 実装 (シンプル・高速)
- 対応OS: 全主要Linux・macOS・Windows (Microsoft 公式フォーク・後廃止)
- ライセンス: BSD (2009-2024年) →RSALv2/SSPL (2024年3月変更・論争)・Valkey (2024年3月Linux Foundation フォーク・BSD 維持)
- 特徴: In-Memory (100万 ops/sec)・Pub/Sub・複数データ構造・Cluster・Streams・JSON・Search・Vector
- 主要バージョン: 1.0 (2009年9月)・2.0 (2010年9月・Hash データ型)・2.6 (2012年・Lua スクリプト)・3.0 (2015年4月・Cluster)・5.0 (2018年10月・Streams)・7.0 (2022年4月・Functions)・7.4 (2024年最新)
Salvatore Sanfilippo (antirez) の物語
Redis 創造者:
- 1977年生まれ: イタリア・シチリア島カターニア
- 背景: 独学プログラマ・大学未卒
- 2009年Redis 開発開始: 自身のスタートアップ (LLOOGG Real-time Web Analytics) で必要なDB を開発
- 2010年VMware に Redis 開発専属雇用: 給与もらいながらオープンソース開発
- 2011年Redis Labs (後Redis Ltd.) 設立: 商用 Redis Enterprise 開発
- 2020年Redis 開発から退任: 「他のことに時間を使いたい」・Redis Labs CEO 退任
- 2024年現在: Pieces (Tech メディア) ・個人ブログantirez.com で発信・「最も影響力ある オープンソース開発者の1人」評価
In-Memory データベース
Redis の核心:
- 動作: 全データを RAM (メモリ) に保持・ディスクは Snapshot/AOF で永続化
- 性能: 100万 ops/sec (1台)・SSD ベースDB の100-1000倍高速
- 競合: Memcached (2003年Brad Fitzpatrick・LiveJournal・シンプルKV)・Redis は豊富なデータ構造で勝利
- 採用: 全主要Web サイトでキャッシング (Twitter・Pinterest・Reddit・Stack Overflow 等)
Pub/Sub (Publish/Subscribe メッセージング)
Redis の重要機能:
- 動作: メッセージ送信側 (Publisher) と受信側 (Subscriber) を分離・チャンネル経由配信
- 採用: Discord (リアルタイム チャット)・Slack (一部)・Twitter (X) Realtime
- 後継: Redis Streams (2018年5.0・Kafka 競合) で永続化対応
多様なデータ構造
Redis vs シンプルKV:
- String: 基本文字列 (キャッシング)
- List: リスト (キュー・スタック)
- Set: 集合 (ユニーク要素)
- SortedSet (ZSET): スコア付き集合 (リーダーボード)
- Hash: フィールド/値マップ (オブジェクト)
- Stream: 時系列ログ (Kafka 競合・2018年-)
- Geo: 地理空間 (位置検索・Uber)
- HyperLogLog: カーディナリティ推定 (ユニークユーザー数)
- Bitmap: ビット操作 (フラグ管理)
Redis Cluster (2015年3.0)
分散Redis:
- 動作: 複数Redis ノードでデータシャーディング・自動フェイルオーバー
- 競合: Cassandra (完全分散)・Redis は限定的分散だがシンプル
- 採用: 大手企業のRedis 大規模利用 (Twitter・Stack Overflow 等)
Redis Streams (2018年5.0)
Apache Kafka 競合:
- 動作: 時系列メッセージング・永続化対応 (Pub/Sub は非永続)・Consumer Group
- 競合: Apache Kafka (2011年LinkedIn・Apache・現代主流)・Redis Streams は軽量代替
- 採用: マイクロサービス間メッセージング・イベント駆動アーキ
2024年ライセンス論争
Redis のオープンソース戦略変更:
- 2024年3月20日Redis Inc. (旧Redis Labs): ライセンスをBSD から RSALv2/SSPL へ変更
- 狙い: AWS ElastiCache・Google Cloud Memorystore 等のクラウドベンダーへの対抗
- 業界反応: Linux Foundation が Valkey (Redis フォーク・BSD 維持) を2024年3月28日発表
- Valkey 採用: AWS (ElastiCache for Valkey 2024年-)・Google Cloud (Memorystore for Valkey 2024年-)・Oracle Cloud Infrastructure
- 後継: Redis (商用) vs Valkey (オープンソース) の分岐進行・2024-2025年で大きな影響予測
採用システム (2009-2024年)
- キャッシング: Twitter (X)・Pinterest・Reddit・Stack Overflow・Booking.com・Instagram・YouTube
- セッション管理: 全主要Web サイト・Express/Django/Rails 等のWeb フレームワーク
- リアルタイム: Discord (チャット)・Slack (一部)・StockTwits・GitHub Actions (一部)
- ジョブキュー: Sidekiq (Ruby)・Bull (Node.js)・Celery (Python)・Resque (Ruby)
- リーダーボード: 全主要ゲーム・ソーシャル機能
- クラウド: AWS ElastiCache for Redis (2013年-)・Azure Cache for Redis (2014年-)・Google Cloud Memorystore (2018年-)・Upstash (2020年-Serverless Redis)
- 2024年Valkey 採用: AWS・Google Cloud・OCI で並走
関連技術との違い
| 項目 | Memcached (2003) | Redis (2009) | Cassandra (2008) | MongoDB (2009) |
|---|---|---|---|---|
| データモデル | Key-Value (シンプル) | **Key-Value+データ構造 (List/Set/Hash 等) ** | Wide Column | Document |
| 永続化 | なし (純In-Memory) | **Snapshot/AOF (永続化可能) ** | あり (SSTable) | あり (BSON ファイル) |
| Pub/Sub | なし | **あり (Pub/Sub・Streams) ** | なし | Change Streams (限定) |
| トランザクション | なし | **あり (MULTI/EXEC) ** | Lightweight Transaction | あり (4.0 2018年-) |
| 用途 | 単純キャッシュ | キャッシュ+メッセージング+多用途 | 大規模分散DB | Document DB |
| シェア (2024 DB-Engines) | 限定 | 6位 | 11位 | 5位 |
よくある質問 (FAQ)
Q1: なぜRedis が「世界最高速DB」と呼ばれるか? A: (1) In-Memory (RAM ベース) でSSD ベースDB の100-1000倍高速・(2) 単一スレッド (Single-threaded) でロック競合なし・(3) C 言語実装でシンプル・(4) 100万 ops/sec を1台で達成・(5) Pub/Sub でリアルタイム性能優位・(6) 全主要Web 高負荷システムで採用継続・全要因で「世界最高速DB」評価。
Q2: Redis と Memcached どちらが推奨か? A: Redis 推奨。Memcached (2003年-) は単純Key-Value のみ・シンプルだが機能不足。Redis は Memcached の全機能+データ構造 (List/Set/Hash/SortedSet)・Pub/Sub・Cluster・永続化・全方位機能。新規プロジェクトは Redis・既存Memcached システムは継続も新規移行は Redis 推奨。
Q3: 現代でRedis 学ぶ価値は? A: 大いにあり。(1) Stack Overflow 6位 (23%) の主流DB・(2) Backend Engineer の必須スキル・(3) キャッシング・セッション・ジョブキュー全用途で利用・(4) 全主要クラウドで標準・(5) Redis 認定 (Redis Certified Developer) で履歴書強化・(6) 高給職 (世界平均年収$100,000-$150,000)・(7) 2024年Valkey 移行で再注目・新卒/転職市場で重要DB スキル。
まとめ
- 2009年Salvatore Sanfilippo 開発
- 世界最高速のインメモリ Key-Value Store
- Pub/Sub・データ構造・Lua スクリプト
- キャッシング・セッション管理の標準
- 2024年Valkey フォーク (Linux Foundation)