Redis(/ ˈrɛdɪs /;[ 8 ] [ 9 ]リモート辞書サーバー)[ 8 ]は、メモリ内のキーバリューデータベースであり、分散キャッシュおよびメッセージブローカーとして使用され、オプションで永続性も備えています。[ 10 ]すべてのデータをメモリ内に保持し、その設計により、Redisは低遅延の読み書きを提供するため、キャッシュを必要とするユースケースに特に適しています。
このプロジェクトは、2009 年よりSalvatore Sanfilippoによって開発および保守されていました。[ 11 ] 2015 年より 2020 年まで、彼はRedis Labsがスポンサーとなっているプロジェクトのコア チームを率いていました。[ 12 ] Salvatore Sanfilippo は 2020 年に Redis の保守担当者を辞任しました。[ 13 ] 2021 年に Redis Labs は名前から Labs を削除し、現在は単に「Redis」として知られています。[ 14 ]
2018 年、Redis の一部のモジュールは、Commons Clause付きの修正版Apache 2.0ライセンスを採用しました。[ 15 ] 2024 年、メインの Redis コードは、オープンソースのBSD-3 ライセンスから、Redis Source Available License v2 とServer Side Public License v1 のデュアル ライセンスに変更されました。[ 6 ] 2025 年 5 月 1 日、Redis はバージョン 8.0 から 3 つのライセンスとなり、 3 番目のオプションとしてGNU Affero General Public License が追加されました。[ 7 ]

Redisという名前は、Remote Dictionary Server を意味します。[ 8 ] Redis プロジェクトは、Salvatore Sanfilippo ( antirezというニックネーム) がイタリアのスタートアップの拡張性を改善しようとしてリアルタイムのWeb ログ アナライザーを開発していたときに始まりました。従来のデータベース システムを使用して一部のワークロードをスケーリングする際に大きな問題に直面した後、Sanfilippo は 2009 年にTclで Redis の最初の概念実証バージョンのプロトタイプを作成し始めました。[ 16 ]その後、Sanfilippo はそのプロトタイプを C 言語に翻訳し、最初のデータ型であるリストを実装しました。数週間プロジェクトを社内で使用して成功した後、Sanfilippo はそれをオープンソースにすることを決定し、Hacker Newsでプロジェクトを発表しました。このプロジェクトは、特に Ruby コミュニティの間で注目を集め始め、GitHubやInstagram が最初に採用した企業の 1 つとなりました。[ 17 ] [ 18 ]
サンフィリッポは2010年3月にVMwareに採用された。[ 19 ] [ 20 ] [ 21 ]
2013年5月、RedisはPivotal Software(VMwareのスピンオフ企業)のスポンサーを受けた。[ 22 ]
2015年6月、開発はRedis Ltd.の支援を受けるようになった。[ 23 ]
2018 年 8 月、適切な補償なしにマネージドクラウド プロバイダーによるソフトウェアの使用を制御するため、Redis Ltd. はオプションの Redis モジュールをGNU Affero General Public License (AGPL)からApache Licenseに再ライセンスすると発表したが、商用利用を制限する「Commons Clause」と呼ばれる追加条項が適用される。これにより、モジュールはソースコードが公開され、フリー ソフトウェアではなくなった。コア Redis ソフトウェアはBSD ライセンスのままであり、Redis Ltd. はこれらの条件を維持することを約束した。[ 15 ] [ 24 ] [ 25 ]
2018年10月、Redis 5.0がリリースされ、Redis Streamが導入されました。これは、単一のキーで複数のフィールドと文字列値を自動的かつ時間ベースのシーケンスで保存できる新しいデータ構造です。[ 26 ]
2019 年 2 月、ライセンス条項に関する混乱を理由に、Redis モジュールの Apache License with Commons Clause ライセンス条項は、「Redis Source Available License」(RSAL)に置き換えられました。RSAL では、モジュールを「データベース、キャッシング エンジン、ストリーム処理エンジン、検索エンジン、インデックス作成エンジン、または ML/DL/AI サービング エンジン」の一部として商用利用することを明示的に禁止しています。[ 27 ] [ 28 ]フリーでオープンソースのライセンスの下でのモジュールの最後の改訂版は、コミュニティ メンバーによって GoodFORM プロジェクトとしてフォークされました。 [ 29 ]
2020年6月、サルヴァトーレ・サンフィリッポはRedisの唯一のメンテナーを辞任した。サンフィリッポの後任にはヨッシ・ゴットリーブとオラン・アグラが就任した。[ 13 ] [ 30 ]
2024 年 3 月、Redis Ltd. は、バージョン 7.4 からコア Redis ソフトウェアが RSAL およびServer Side Public License (SSPL) の下で再ライセンスされることを発表しました。どちらもソースコードが公開されており、フリーではありません。[ 31 ]その後、 Linux Foundation は、Redis の最後の BSD ライセンス版をValkeyとしてフォークすることを発表しました。[ 32 ] 2025 年 5 月、Redis Ltd. は、フォークによって差別化された製品の「公平な競争環境」を作るという目標が達成され、ライセンス変更後 Redis が「記録的な成長」を遂げたことを理由に、バージョン 8.0 からライセンスを AGPL に再度変更すると発表しました。[ 7 ]
サンフィリッポは2024年12月にRedisに復帰した。[ 33 ]
Redisは、データストアとキャッシュの両方の機能を備えたシステムです。データはメインコンピュータのメモリから読み込まれ、変更されます。同時に、ランダムアクセスではなくシーケンシャルアクセスに最適化された形式でディスクにも保存されます。フォーマットされたデータは、システムが再起動された後にのみメモリに再構築されます。
Redisは、リレーショナルデータベース管理システム(RDBMS)とは異なるデータモデルを採用しています。コマンドは、データベースエンジンによって実行されるクエリではなく、抽象データ型に対する操作を指定します。データは、直接取得できるように設計された構造に格納されます。従来のRDBMSで一般的なセカンダリインデックス、集計、その他の機能には依存しません。Redisの実装では、forkシステムコールを使用してデータを保持するプロセスを複製します。これにより、子プロセスがメモリ内のデータをディスクに永続化している間も、親プロセスはクライアントへのサービス提供を継続できます。
Redis はキーを値の型にマッピングします。Redis は、文字列、JavaScript Object Notation (JSON) ドキュメント、ハッシュ (フィールドのコレクションで、各フィールドは名前と値の文字列のペアです)、[ 34 ]リスト、セット、ベクトルセット、[ 35 ]など、多くのデータ型をサポートしています。
Redisクエリエンジンを使用すると、ユーザーはRedisをドキュメントデータベース、ベクターデータベース、セカンダリインデックス、および検索エンジンとして使用できます。Redisクエリエンジンを使用すると、ハッシュおよびJSONドキュメントのインデックスを定義し、ベクター検索、全文検索、地理空間クエリ、および集計のための豊富なクエリ言語を使用できます。 [ 36 ]
Redis Pub/Sub(publish/subscribeの略)は軽量なメッセージング機能です。パブリッシャーはチャネルにメッセージを送信し、サブスクライバーはそのチャネルからメッセージを受信します。[ 37 ]
Redisトランザクションでは、一連のコマンドを1つのステップで実行できます。トランザクションの実行中は、他のクライアントから送信されたリクエストは処理されません。これにより、コマンドが単一の独立した操作として実行されることが保証されます。[ 38 ]
Redisユーザーはサーバー上でLuaスクリプトをアップロードして実行することもできます。[ 39 ]
2025年5月1日現在、Redis 8.0以降のすべてのバージョンでは、すべてのデータ型が同じパッケージ[ 40 ]に含まれており、Redis Source Available License v2 [ 41 ]の下で利用可能です。以前は、一部のデータ型は別々であったため、異なるライセンスの下で利用可能でした。
Redis は通常、データセット全体をメモリに保持します。バージョン 2.4 までは、仮想メモリ[ 42 ]と呼ばれるものを使用するように構成でき、データセットの一部がディスクに保存されますが、この機能は非推奨です。Redisの永続性は、 2 つの異なる方法で実現できます。スナップショットでは、Redis RDB ダンプ ファイル フォーマットを使用して、データセットがバイナリ ダンプとして定期的にメモリからディスクに非同期で転送されます。ジャーナリングでは、データセットを変更する各操作の記録が、バックグラウンド プロセスで追記専用ファイル (AOF) に追加されます。Redis は、ジャーナルの際限のない増加を避けるために、バックグラウンドで追記専用ファイルを書き換えることができます。ジャーナリングはバージョン 1.1 で導入され、一般的に安全な方法と考えられています。
デフォルトでは、Redisは少なくとも2秒ごとにファイルシステムにデータを書き込みますが、必要に応じてより厳密なオプションも利用できます。デフォルト設定でシステム全体が障害を起こした場合でも、失われるデータはわずか数秒分にとどまります。
Redis はマスター・レプリカ複製をサポートしています。任意の Redis サーバーのデータは、任意の数のレプリカに複製できます。レプリカは、別のレプリカのマスターになることができます。これにより、Redis は単一ルートの複製ツリーを実装できます。Redis レプリカは書き込みを受け入れるように構成でき、インスタンス間で意図的または意図しない不整合を許容します。パブリッシュ/サブスクライブ機能は完全に実装されているため、レプリカのクライアントはチャネルを購読し、複製ツリーの任意の場所にあるマスターに公開されたメッセージの完全なフィードを受信できます。複製は、読み取り(書き込みではない)スケーラビリティまたはデータ冗長性に役立ちます。[ 43 ]
データの永続性が不要な場合、Redis のインメモリ特性により、トランザクションがコミットされたとみなされる前にすべての変更をディスクに書き込むデータベース システムと比較して、優れたパフォーマンスを発揮します。[ 8 ] Redis は単一のプロセスとして動作し、AOF (追記専用ファイル) を書き換える際にはシングルスレッドまたはダブルスレッドになります。[ 44 ]そのため、単一の Redis インスタンスでは、ストアド プロシージャなどのタスクの並列実行を使用することはできません。
Redis は 2015 年 4 月にバージョン 3.0 のリリースでクラスタリングを導入しました。[ 45 ]クラスタ仕様では、Redis コマンドのサブセットが実装されています。すべての単一キーコマンドが使用可能で、複数キー操作 (和集合や積集合に関連するコマンド) は同じノードに属するキーに制限され、データベース選択操作に関連するコマンドは使用できません。[ 46 ] Redis クラスタは最大 1,000 ノードまで拡張でき、「許容できる」書き込み安全性を実現し、一部のノードが故障しても操作を継続できます。[ 47 ] [ 48 ]
RedisはAdobe [ 49 ] 、Airbnb [ 50 ] 、Amazon [ 51 ] 、Hulu [ 52 ] 、OpenAI [ 53 ] 、Salesforce [ 54 ]、Shopify [ 55 ]、Tinder [ 56 ]、Twitter [ 57 ] [ 58 ] 、 Yahoo [ 59 ]などで使用されています。
Redisの典型的な使用例としては、セッションキャッシュ、フルページキャッシュ、メッセージキューアプリケーション、リーダーボード、カウントなどがあります。[ 60 ]パブリッシュ/サブスクライブメッセージングパラダイムにより、サーバー間でリアルタイム通信が可能になります。
Amazon Web Services はElastiCache for Redisと呼ばれるマネージド Redis サービスを提供しており、Google はCloud Memorystore と呼ばれるマネージド Redis サービスを提供しており、[ 61 ] Microsoft はAzureで Azure Cache for Redis を提供しており、[ 62 ] Alibaba はAlibaba Cloudで ApsaraDB for Redis を提供しています。[ 63 ]
Redisは様々なライブラリによってインターフェースされています。例えば、POCO C++ライブラリは、そのライブラリを介してRedisとのインターフェースをサポートしていますPoco::Redis。[ 64 ]
は ANSI C で記述されており、Linux、*BSD、OS X などのほとんどの POSIX システムで外部依存関係なしで動作します。