| 原作者 | サルヴァトーレ・サンフィリッポ[1] [2] |
|---|---|
| 開発者 | レディス[1] [2] |
| 初回リリース | 2009年2月26日[3] |
| 安定版リリース | 7.4.1 [4]
/ 2024年10月2日 |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | Unixライク[5] |
| 利用可能 | 英語 |
| タイプ | データ構造ストア、キーバリューデータベース |
| ライセンス | Redisソース利用可能ライセンスまたはSSPL [6] |
| Webサイト | レディス |
Redis(/ ˈ r ɛ d ɪ s / ; [7] [8] リモート辞書サーバー)[7]は、ソースが利用可能なインメモリストレージであり、分散型のインメモリ キーバリュー データベース、キャッシュ、メッセージブローカーとして使用され、オプションで耐久性を備えています。[9]すべてのデータをメモリ内に保持し、その設計により、Redisは低レイテンシの読み取りと書き込みを提供し、キャッシュを必要とするユースケースに特に適しています。Redisは最も人気のあるNoSQLデータベースであり、[10] [11] [12]最も人気のあるデータベースの1つです。[13] Redisは、 Twitter、[14] [15] Airbnb、[16] Tinder、[17] Yahoo、[18] Adobe、[19] Hulu、[20] Amazon [21]やOpenAIなどの企業で使用されています。[22]
Redis は、文字列、リスト、マップ、セット、ソート済みセット、HyperLogLog、ビットマップ、ストリーム、空間インデックスなど、さまざまな種類の抽象データ構造をサポートしています。
このプロジェクトは、2009年からサルバトーレ・サンフィリッポによって開発および保守されてきました。[23] 2015年から2020年まで、彼はRedis Labsがスポンサーとなっているプロジェクトコアチームを率いていました。[24]サルバトーレ・サンフィリッポは2020年にRedisのメンテナーを辞めました。[25] 2021年にRedis Labsは名前からLabsを削除し、現在は単に「Redis」として知られています。[26]
2018年には、Redisの一部のモジュールがSSPLを採用しました。[27] 2024年には、RedisのメインコードはRedis Source Available License v2とServer Side Public License v1のデュアルライセンスに切り替わりました。 [6]
歴史

Redisという名前は、リモート辞書サーバーを意味します。[7] Redisプロジェクトは、Redisの元の開発者であるサルバトーレ・サンフィリッポ(愛称はantirez)が、イタリアのスタートアップのスケーラビリティを改善しようと、リアルタイムのウェブログアナライザーを開発していたときに始まりました。従来のデータベースシステムを使用していくつかの種類のワークロードをスケーリングする際に重大な問題に遭遇した後、サンフィリッポは2009年にTclでRedisの最初の概念実証バージョンのプロトタイプを作り始めました。[28]その後、サンフィリッポはそのプロトタイプをC言語に翻訳し、最初のデータ型であるリストを実装しました。数週間プロジェクトを社内で使用して成功した後、サンフィリッポはそれをオープンソースにすることを決定し、Hacker Newsでプロジェクトを発表しました。プロジェクトは特にRubyコミュニティの間で注目を集め始め、GitHubとInstagramはそれを採用した最初の企業の中にありました。[29] [30]
サンフィリッポは2010年3月にVMwareに採用された。 [31] [32] [33]
2013年5月、RedisはPivotal Software(VMwareのスピンオフ)の支援を受けた。[34]
2015年6月、開発はRedis Labsによって後援されるようになった。[35]
2018年8月、Redis Labsは、Redisで利用可能なオプションモジュールの一部をソースコードが公開されているソフトウェアライセンスであるServer Side Public Licenseに切り替えると発表しました。 [27]一方、コアソフトウェアはBSDライセンスのままであると明言しました。[36]
2018年10月、Redis 5.0がリリースされ、Redis Streamが導入されました。これは、単一のキーで複数のフィールドと文字列値を自動的に時間ベースのシーケンスで保存できる新しいデータ構造です。[37]
2020年6月、サルヴァトーレ・サンフィリッポがRedisの唯一のメンテナーを退任した。サンフィリッポの後任にはヨッシ・ゴットリーブとオラン・アグラが就任した。[38] [39]
2024年3月、Redisはコアリポジトリに対してRedis Source Available License v2とServer Side Public License v1と呼ばれる別のプロプライエタリソフトウェアライセンスに切り替えましたが、これは2018年の誓約を破るものでした[6]。その結果、Linux FoundationはValkeyという名前でフォークを作成し、[40]コミュニティのメンテナー、貢献者、およびユーザーがRedisデータベースのオープンソースバージョンで作業を継続できるようにしました。
他のデータベースシステムとの違い
Redis は、ストアとキャッシュの両方の機能を持つシステムというアイデアを普及させました。Redis は、データは常にメイン コンピュータ メモリから変更および読み取られるように設計されていますが、ランダム データ アクセスには適さない形式でディスクに保存されます。フォーマットされたデータは、システムが再起動されたときにのみメモリに再構築されます。
Redis は、リレーショナル データベース管理システム(RDBMS)と比べて非常に珍しいデータ モデルも提供します。ユーザー コマンドは、データベース エンジンによって実行されるクエリを記述するのではなく、特定の抽象データ型に対して実行される特定の操作を記述します。したがって、データは、後で高速に取得できるような方法で保存する必要があります。取得は、セカンダリ インデックス、集計、または従来の RDBMS のその他の一般的な機能の形式で、データベース システムの助けを借りずに行われます。Redis の実装では、データを保持しているプロセスを複製するためにforkシステム コールを多用します。これにより、親プロセスはクライアントにサービスを提供し続け、子プロセスはメモリ内のデータをディスクに書き込みます。
人気
月間DB-Enginesランキングによると、Redisは最も人気のあるキーバリューデータベースであることが多いです。[10] Redisは、ユーザーレビューに基づくユーザー満足度と市場プレゼンスでNoSQLデータベースの第4位にランクされており、 [41]コンテナで最も人気のあるNoSQLデータベース、[42]ランキングウェブサイトstackshare.ioによる2019年のデータストアの第4位にランクされています。[43] Stack Overflow開発者調査では、2017年から2021年まで毎年最も愛されているデータベースに選ばれています。[44]
サポートされている言語
Redisバージョン2.6以降では、Lua言語によるサーバー側スクリプト機能が搭載されています。[45]
多くのプログラミング言語には、クライアント側にRedis言語バインディングがあり、これには以下が含まれます。 [46] ActionScript、C、C++、C#、Chicken、Clojure、Common Lisp、Crystal、D、Dart、Delphi、[47] Elixir、Erlang、Go、Haskell、Haxe、Io、Java、Nim、JavaScript ( Node.js )、Julia、Lua、Objective-C、OCaml、Perl、PHP、Pure Data、Python、R、[48] Racket、Ruby、Rust、Scala、Smalltalk、Swift、Tcl。これらの言語で作成されたクライアントソフトウェアプログラムがいくつか存在します。[46]
データ型
Redis はキーを値のタイプにマッピングします。Redis と他の構造化ストレージシステムとの重要な違いは、Redis が文字列だけでなく抽象データ型もサポートしていることです。
- 文字列のリスト
- 文字列のセット(繰り返しのない、ソートされていない要素のコレクション)
- ソートされた文字列セット(スコアと呼ばれる浮動小数点数で順序付けられた、繰り返しのない要素のコレクション)
- キーと値が文字列であるハッシュテーブル
- HyperLogLogsは、セットカーディナリティサイズの概算に使用され、2014年4月のRedis 2.8.9以降で利用可能になりました。[37]
- コンシューマーグループを使用したエントリのストリーム。複数のフィールドと文字列値を単一のキーに自動で時間ベースのシーケンスで保存できます。2018年10月のRedis 5.0以降で利用可能になりました。[37]
- Redis 3.2以降で利用可能なジオハッシュ技術の実装による地理空間データ。 [49]
値の型によって、その値に対して使用できる操作 (コマンドと呼ばれる) が決まります。Redis は、セット間の交差、結合、差異、リスト、セット、ソート済みセットのソートなど、高レベルでアトミックなサーバー側操作をサポートしています。
RedisモジュールAPIに基づいて、より多くのデータ型がサポートされています。ただし、それらのいくつかはデュアルライセンスであり、BSD 3条項の対象ではないことに注意してください。[50]
- JSON – RedisJSON [51]はECMA-404(JavaScript Object Notation Data Interchange Standard)をネイティブデータ型として実装しています。[52]
- 検索 - Redis用のクエリエンジン。セカンダリインデックス、全文検索、ベクトル類似性検索、集計機能を提供する。[53]
- 時系列– RedisTimeSeries [54]は時系列データ構造を実装する
- ブルームフィルタ、カッコウフィルタ、カウント最小スケッチ、Top-K – RedisBloom [55]はRedis用の確率的データ構造のセットを実装している。
- その他[56]
以前の実装には以下が含まれます。
持続性
Redis は通常、データセット全体をメモリ内に保持します。バージョン 2.4 まででは、データセットの一部をディスク上に保存する仮想メモリ[60]と呼ばれるものを使用するように設定できましたが、この機能は非推奨です。Redis での永続性は、2 つの異なる方法で実現できます。1 つ目はスナップショットです。スナップショットでは、Redis RDB ダンプ ファイル形式を使用して、データセットがバイナリ ダンプとして定期的にメモリからディスクに非同期的に転送されます。もう 1 つはジャーナリングです。ジャーナリングでは、データセットを変更する各操作の記録がバックグラウンド プロセスで追加専用ファイル (AOF) に追加されます。Redis は、ジャーナルが無制限に大きくなるのを防ぐために、バックグラウンドで追加専用ファイルを書き換えることができます。ジャーナリングはバージョン 1.1 で導入され、一般的により安全なアプローチと考えられています。
デフォルトでは、Redis は少なくとも 2 秒ごとにファイルシステムにデータを書き込みますが、必要に応じてより堅牢なオプションやより堅牢でないオプションを利用できます。デフォルト設定で完全なシステム障害が発生した場合、失われるのは数秒分のデータのみです。
レプリケーション
Redis はマスターレプリカレプリケーションをサポートしています。任意の Redis サーバーのデータは、任意の数のレプリカにレプリケートできます。レプリカは別のレプリカのマスターになることができます。これにより、Redis は単一ルートのレプリケーションツリーを実装できます。Redis レプリカは書き込みを受け入れるように構成できるため、インスタンス間の意図的または意図的でない不整合を許容します。パブリッシュサブスクライブ機能が完全に実装されているため、レプリカのクライアントはチャネルをサブスクライブし、レプリケーションツリーの任意の場所にあるマスターにパブリッシュされたメッセージの完全なフィードを受信することができます。レプリケーションは、読み取り(書き込みではない)のスケーラビリティやデータの冗長性に役立ちます。[61]
パフォーマンス
データの耐久性が必要ない場合、Redisのインメモリ特性により、トランザクションがコミットされたとみなされる前にすべての変更をディスクに書き込むデータベースシステムと比較して、優れたパフォーマンスを発揮します。 [7] Redisは単一プロセスとして動作し、AOF(追加専用ファイル)を書き換える際にはシングルスレッドまたはダブルスレッドになります。[62]したがって、単一のRedisインスタンスでは、ストアドプロシージャなどのタスクを並列実行することはできません。
クラスタリング
Redisは2015年4月にバージョン3.0のリリースでクラスタリングを導入しました。[63]クラスタ仕様はRedisコマンドのサブセットを実装しています。すべての単一キーコマンドが利用可能で、複数キー操作(結合と交差に関連するコマンド)は同じノードに属するキーに制限され、データベース選択操作に関連するコマンドは使用できません。[64] Redisクラスタは最大1,000ノードまで拡張でき、「許容可能な」書き込み安全性を実現し、一部のノードに障害が発生しても操作を継続できます。[65] [66]
ユースケース
データベース設計の性質上、典型的な使用例としては、セッションキャッシュ、フルページキャッシュ、メッセージキューアプリケーション、リーダーボード、カウントなどがあります。[67]パブリッシュサブスクライブメッセージングパラダイムにより、サーバー間のリアルタイム通信が可能になります。
Amazon Web ServicesはElastiCache for Redisと呼ばれるマネージドRedisサービスを提供しており、GoogleはCloud Memorystoreと呼ばれるマネージドRedisサービスを提供しています。[68] MicrosoftはAzureでAzure Cache for Redisを提供しています。[69] AlibabaはAlibaba CloudでApsaraDB for Redisを提供しています。[70]
ユーザー
RedisはTwitter、 [14] [15] [71] AirBnB、[16] Tinder、[17] Yahoo、[18] Adobe、[19] Hulu、[20] Amazonなどの企業で使用されています。[21]
参照
- 競合のない複製データ型
- メムキャッシュ
- インフィニスパン
- フリーソフトウェアプロジェクトとしてのRedisの後継であるValkey
参考文献
- ^ ab Bernardi, Stefano (2011 年 1 月 4 日)。「シチリア島を拠点に活動する Redis の開発者 Salvatore Sanfilippo 氏へのインタビュー」。EU-Startups。Menlo Media。
- ^ ab Haber, Itamar (2015 年 7 月 15 日). 「Salvatore Sanfilippo: Redis Labs へようこそ」. Redis Labs .
- ^ 「7 ページ中 7 ページ - Redis - Google Code アーカイブ - Google Code プロジェクト ホスティング用の長期ストレージ」。code.google.com。2024年3月 22 日閲覧。
- ^ 「リリース 7.4.1」。2024年10月2日。 2024年10月27日閲覧。
- ^ 「Redis 入門」。Redis
は ANSI C で書かれており、Linux、*BSD、OS X などのほとんどの POSIX システムで外部依存関係なしで動作します。
- ^ abc "LICENSE.txt". GitHub . 2024年3月20日。
- ^ abcd 「FAQ: Redis」。Redis.io . 2022年2月12日閲覧。
- ^ 「Google グループ」. groups.google.com . 2022 年2 月 25 日閲覧。
- ^ “Redis”. Redis . 2023年7月22日閲覧。
- ^ ab 「DB-Engines ランキング - キーバリューストアの人気ランキング」。DB -Engines。
- ^ Clark, Lindsay. 「複雑なクラウドアプリケーションの導入が急増する中、Redis が AWS で最も人気のあるデータベースに」www.theregister.com . 2023 年 7 月 22 日閲覧。
- ^ 「Instablinks EP 07: Redis™—最も人気のあるインメモリデータベーステクノロジー」。Instaclustr 。 2023年7月22日閲覧。
- ^ 「DB-Enginesランキング」。DB -Engines 。 2023年7月22日閲覧。
- ^ ab Scaling Redis at Twitter、2014年8月31日、2023年7月22日閲覧
- ^ ab Twitter での Redis の大規模使用 - Twitter の Rashmi Ramesh 著 - RedisConf17 -、2017 年 7 月 5 日、 2023 年 7 月 22 日閲覧
- ^ ab AWS re:Invent 2018: Airbnb のセルフマネージド Redis から ElastiCache for Redis への道のり (DAT319)、2018 年 11 月 28 日、 2023 年 7 月 22 日取得
- ^ ab 「Amazon ElastiCache を使用して Tinder で大規模な回復力を構築する | AWS データベースブログ」。aws.amazon.com。2020 年 1 月 30 日。2023年 7 月 22 日閲覧。
- ^ ab AWS re:Invent 2022 - Yahoo が AWS を使用してインメモリワークロードのコストを最適化する方法 (DAT321)、2022 年 12 月 2 日、2023 年 7 月 22 日に取得
- ^ ab AWS re:Invent 2014 | (SDD402) Amazon ElastiCache Deep Dive、2014 年 11 月 17 日、 2023 年 7 月 22 日取得
- ^ ab 「Hulu ケーススタディ」。Amazon Web Services, Inc. 2023年7月22日閲覧。
- ^ ab 「Amazon GameOn データベース移行ケーススタディ – Amazon Web Services (AWS)」。Amazon Web Services, Inc. 2023 年 7 月 22 日閲覧。
- ^ 「Elevated API Errors」. status.openai.com . 2023年10月28日閲覧。
- ^ 「オープンソースデータベースRedisの開発者、サルバトーレ・サンフィリッポ氏との会話」VentureBeat . 2016年6月20日. 2021年6月29日閲覧。
- ^ Kepes, Ben (2015 年 7 月 15 日)。「Redis Labs が Redis の開発者 Salvatore Sanfilippo を採用」。Network World。2015年8 月 30 日閲覧。
- ^ Francisco, Thomas Claburn in San. 「データベースの巨匠 Antirez 氏が Redis に期待を寄せる: ソフトウェアを管理する構造化された生活ではなく、コードを記述する非構造化された生活を望んでいるようだ」www.theregister.com 。 2021 年 6 月 29 日閲覧。
- ^ 「データベーススタートアップのRedis LabsがRedisとしてブランド名を変更」SiliconANGLE 2021年8月11日2021年8月11日閲覧。
- ^ ab Claburn, Thomas. 「Redis には殺害の許可がある: オープンソース データベース メーカーが一部のコードを独占的に利用」www.theregister.com 。2024年 3 月 21 日閲覧。
- ^ Sanfilippo, Salvatore (2017 年 4 月 28 日). 「Redis の Tcl プロトタイプ」. GitHub Gist . 2018 年10 月 8 日閲覧。
- ^ Wanstrath, Chris (2009 年 11 月 3 日). 「Introducing Resque」.ブログ. 2018 年10 月 8 日閲覧。
- ^ Krieger, Mike (2011 年 10 月 31 日)。「Redis に数億ものシンプルなキーと値のペアを保存する」Instagram エンジニアリング ブログ。2018年10 月 8 日閲覧。
- ^ Shapira, Gwen (2010 年 3 月 17 日)。「VMware が Redis の主要開発者を採用 – しかしその理由は?」ブログ。2016年9 月 25 日閲覧。
- ^ Sanfilippo, Salvatore (2010 年 3 月 15 日)。「VMware: the new Redis home」。ブログ。2016 年9 月 25 日閲覧。
- ^ Collison, Derek (2010 年 3 月 15 日)。「VMware: The Console: VMware が Redis の主要開発者を採用」。VMware ブログ。2010 年 3 月 22 日時点のオリジナルよりアーカイブ。2016 年9 月 25 日閲覧。
- ^ Sanfilippo, Salvatore. 「Redis スポンサー」. Redis.io . Redis Labs . 2019 年4 月 11 日閲覧。
- ^ Sanfilippo, Salvatore (2015 年 7 月 15 日). 「Thanks Pivotal, Hello Redis Labs」. <antirez> . 2019 年 4 月 3 日閲覧。
- ^ Shoolman, Yiftach (2018 年 8 月 22 日)。「Redis のライセンスは BSD であり、今後も BSD のままです」。Redis.io。Redis Labs。2024年9月 30 日閲覧。
- ^ abc 「Redis 5.0 が登場!」 2018 年 10 月 22 日。
- ^ 「データベースの巨匠 Antirez 氏が Redis に着任: ソフトウェアを管理する構造化された生活ではなく、コードを書く非構造化された生活を望んでいるようだ」theregister.com。
- ^ 「Redisの冒険の終わり -」。antirez.com 。 2020年11月10日閲覧。
- ^ 「Linux Foundation がオープンソースの Valkey コミュニティを立ち上げ」。
- ^ 「ベスト NoSQL データベース: G2 Crowd による 2015 年秋のレポート」。G2 Crowd。2015 年 8 月 24 日時点のオリジナルよりアーカイブ。2015年 8 月 25 日閲覧。
- ^ 「Docker の実際の導入に関する 8 つの驚くべき事実」。Datadog。2018年6 月 13 日。
- ^ 「🏆 2019 年のトップ 50 開発者ツール」。StackShare。2020年 7 月 28 日閲覧。
- ^ 「開発者アンケート結果 2021: 最も愛され、恐れられ、望まれているデータベース」。Stack Overflow。Stack Exchange。2021年8月23日閲覧。
- ^ 「EVAL – Redis」. redis.io .
- ^ ab "Redis". redis.io .
- ^ 「Danieleteti/Delphiredisclient」。GitHub 。 2022年9月17日。
- ^ Lewis, BW (2015 年 7 月 5 日). 「rredis: 「Redis」キー/値データベース クライアント」.包括的な R アーカイブ ネットワーク。2019年 4 月 3 日閲覧。
- ^ 「Redis 3.2 リリースノート」。GitHub。2017年3 月 10 日閲覧。
- ^ 「Redis ライセンスの概要」。Redis。2023年 9 月 30 日閲覧。
- ^ 「RedisJSON - Redis 用の JSON データ型」。
- ^ 「RedisJSON - Redis 用の JSON データ型」redisjson.io。
- ^ RediSearch、RediSearch、2023-09-30、2023-09-30取得
- ^ 「RedisTimeSeries - Redis の時系列データ構造」。
- ^ 「RedisBloom - Redis 用の確率的データ型モジュール」。
- ^ 「モジュール」。Redis 。2023年9月30日閲覧。
- ^ 「RedisGraph - Redis 用のグラフ データベース モジュール」。
- ^ Kogan, Lior (2023-07-05). 「RedisGraph のサポート終了のお知らせ」Redis . 2023-09-30閲覧。
- ^ FalkorDB、FalkorDB、2023-09-29、2023-09-30取得
- ^ 「仮想メモリ」Redis.io . 2019年4月11日閲覧。
- ^ 「Google Code アーカイブ - Google Code プロジェクト ホスティング用の長期ストレージ」。code.google.com。
- ^ 「Raspberry Pi 上の Redis: 非同盟の地での冒険 - <antirez>」。antirez.com。
- ^ 「Redis 3.0 リリースノート」。GitHub。2017年3 月 10 日閲覧。
- ^ 「Cluster Spec」。2017年3月10日閲覧。
- ^ 「Cluster Spec」。2017年3月10日閲覧。
- ^ 「クラスターチュートリアル」 。 2017年3月10日閲覧。
- ^ 「Redis の使用例トップ 5 - ObjectRocket」。ObjectRocket。Rackspace。2017年 11 月 7 日。
- ^ 「Memorystore: インメモリデータストア」。Google Cloud 。2023年2月3日閲覧。
- ^ 「Azure Redis Cache - Redis キャッシュ クラウド サービス - Microsoft Azure」。azure.microsoft.com。
- ^ 「ApsaraDB for Redis: キーバリューデータベースサービス - Alibaba Cloud」。www.alibabacloud.com。
- ^ 「Twitter が Redis を使用してスケールする方法 - 105 TB RAM、39MM QPS、10,000 以上のインスタンス - 高いスケーラビリティ」。Highscalability.com。2014年 9 月8日。
さらに読む
- Isabel Drost および Jan Lehnard (2009 年 10 月 29 日)、Happenings: NoSQL Conference、ベルリン、The H。Redis プレゼンテーションのスライド。概要。
- Billy Newport (IBM): 「キー/値プログラミング モデルをより高いレベルに進化させる」Qcon カンファレンス 2009 サンフランシスコ。
- A Mishra: 「Centos/Fedora サーバーに Redis をインストールして構成する」。
- E. Mouzakitis: 「Redis パフォーマンスの監視」
外部リンク
- 公式サイト
- Valkey: オリジナルの BSD ライセンスの Redis ソフトウェアの継続的な開発拠点
