レディス

レディス
原作者サルヴァトーレ・サンフィリッポ[ 1 ] [ 2 ]
開発者レディス[ 1 ] [ 2 ]
初回リリース2009年2月26日[ 3 ] (2009年2月26日
安定版リリース
8.4.0 [ 4 ] ウィキデータで編集する / 2025年11月18日 (2025年11月18日
リポジトリ
書かれたC
オペレーティング·システムUnixライク[ 5 ]
入手可能な英語
タイプデータ構造ストアキーバリューデータベース
ライセンスRedisのソースコードライセンス、SSPL [ 6 ]またはAGPL [ 7 ]
Webサイトレディス.io ウィキデータで編集する

Redis/ ˈ r ɛ d ɪ s / ; [ 8 ] [ 9 ]リモート辞書サーバー[ 8 ]は、分散キャッシュおよびメッセージブローカーとして使用されるメモリ内キーバリューデータベースであり、オプションで耐久性を備えています。[ 10 ]すべてのデータをメモリ内に保持し、その設計により、Redisは低レイテンシの読み取りと書き込みを提供し、キャッシュを必要とするユースケースに特に適しています。

このプロジェクトは、2009年からサルヴァトーレ・サンフィリッポによって開発・保守されてきた。 [ 11 ] 2015年から2020年まで、彼はRedis Ltdがスポンサーとなっているプロジェクトのコアチームを率いていた。[ 12 ]サルヴァトーレ・サンフィリッポは2020年にRedisのメンテナーを退任した。 [ 13 ] 2021年にRedis LabsはLabsという名称を削除し、現在は単に「Redis」として知られている。[ 14 ]

2018年、Redisの一部のモジュールは、コモンズ条項付きの修正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からトリプルライセンスとなり、GNU Affero General Public Licenseが3番目のオプションとなりました。[ 7 ]

歴史

Redisの元開発者、サルヴァトーレ・サンフィリッポ氏(2015年撮影)

Redisという名前は、Remote Dictionary Serverを意味します。[ 8 ] Redisプロジェクトは、Salvatore Sanfilippo(ニックネームはantirez)がイタリアのスタートアップのスケーラビリティを改善しようとして、リアルタイムのウェブログアナライザーを開発したときに始まりました。従来のデータベースシステムを使用して特定の種類のワークロードをスケーリングする際に重大な問題に遭遇した後、Sanfilippoは2009年にTclでRedisの最初の概念実証バージョンのプロトタイプを作り始めました。[ 16 ]その後、SanfilippoはそのプロトタイプをC言語に翻訳し、最初のデータ型であるリストを実装しました。数週間、プロジェクトを社内で使用して成功した後、Sanfilippoはそれをオープンソース化することを決定し、Hacker Newsでプロジェクトを発表しました。プロジェクトは、特にRubyコミュニティの間で注目を集め始め、GitHubInstagramがそれを採用した最初の企業の中にありました。[ 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ライセンス(Commons条項付き)は「Redis Source Available License」(RSAL)に置き換えられました。RSALでは、モジュールを「データベース、キャッシュエンジン、ストリーム処理エンジン、検索エンジン、インデックスエンジン、またはML/DL/AIサービスエンジン」の一部として商用利用することは明示的に禁止されています。[ 27 ] [ 28 ]フリーオープンソースライセンスのモジュールの最新版は、コミュニティメンバーによってGoodFORMプロジェクトとしてフォークされました。 [ 29 ]

2020年6月、Salvatore Sanfilippo氏がRedisの単独メンテナーを退任しました。Sanfilippo氏の後任にはYossi Gottlieb氏とOran Agra氏が就任しました。[ 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.はバージョン8.0以降、ライセンスをAGPLに再度変更すると発表し、フォークによって差別化された製品の「公平な競争の場」を作るという目標を達成し、Redisはライセンス変更以降「記録的な成長」を達成したと述べた。[ 7 ]

サンフィリッポは2024年12月にレディスに復帰した。[ 33 ]

他のデータベースシステムとの違い

Redisは、データストアとキャッシュの両方の機能を持つシステムです。データはメインコンピュータのメモリから変更・読み出され、同時にランダムアクセスではなくシーケンシャルアクセスに最適化された形式でディスクに保存されます。フォーマットされたデータは、システムの再起動時にのみメモリ上に再構築されます。

Redisは、リレーショナルデータベース管理システム(RDBMS)とは異なるデータモデルを使用します。コマンドは、データベースエンジンによって実行されるクエリではなく、抽象データ型に対する操作を指定します。データは直接取得できるように設計された構造に格納されます。従来のRDBMSで一般的に使用されるセカンダリインデックス、集計、その他の機能には依存しません。Redisの実装では、forkシステムコールを使用して、データを保持しているプロセスを複製します。これにより、親プロセスはクライアントへのサービス提供を継続しながら、子プロセスはメモリ内のデータをディスクに永続化できます。

特徴

Redisはキーを値の型にマッピングします。Redisは、文字JavaScript Object Notation(JSON)ドキュメント、ハッシュ(フィールドの集合で、各フィールドは名前と値の文字列のペア)[ 34 ] 、リストセット、ベクターセット[ 35 ]など、さまざまなデータ型をサポートしています。

Redisクエリエンジンを使用すると、Redisをドキュメントデータベースベクターデータベース、セカンダリインデックス、検索エンジンとして使用できます。Redisクエリエンジンでは、ハッシュドキュメントとJSONドキュメントのインデックスを定義し、ベクター検索、全文検索、地理空間クエリ、集計のための豊富なクエリ言語を使用できます。 [ 36 ]

Redis Pub/Sub(パブリッシュ/サブスクライブの略)は軽量なメッセージング機能です。パブリッシャーはチャネルにメッセージを送信し、サブスクライバーはそのチャネルからメッセージを受信します。[ 37 ]

Redisのトランザクションは、複数のコマンドを1つのステップで実行することを可能にします。トランザクションの実行中は、他のクライアントから送信されたリクエストは処理されません。これにより、コマンドが単一の独立した操作として実行されることが保証されます。[ 38 ]

Redisユーザーはサーバー上にLuaスクリプトをアップロードして実行することもできる。[ 39 ]

2025年5月1日現在、Redisのバージョン8.0以降では、すべてのデータ型が同じパッケージに含まれており[ 40 ]、Redis Source Availableライセンスv2の下で利用できます。[ 41 ]以前は、一部のデータ型は別々であったため、異なるライセンスの下で利用可能でした。

粘り強さ

Redis は通常、データセット全体をメモリに保持します。バージョン 2.4 まででは、データセットの一部をディスクに保存する仮想メモリ[ 42 ]と呼ばれるものを使用するように設定できましたが、この機能は非推奨です。Redis での永続性は、 2 つの異なる方法で実現できます。1 つは Redis RDB ダンプファイル形式を使用して、データセットをバイナリ ダンプとして定期的にメモリからディスクに非同期転送するスナップショット、もう1 つはデータセットを変更する各操作の記録をバックグラウンド プロセスで追加専用ファイル (AOF) に追加する方法の 2 つです。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の典型的な使用例としては、セッションキャッシュ、フルページキャッシュ、メッセージキューアプリケーション、リーダーボード、カウントなどがあります。[ 49 ]パブリッシュ・サブスクライブ型メッセージングパラダイムにより、サーバー間のリアルタイム通信が可能になります。

Amazon Web ServicesはElastiCache for Redisと呼ばれるマネージドRedisサービスを提供しており、GoogleはCloud Memorystoreと呼ばれるマネージドRedisサービスを提供しています。[ 50 ] MicrosoftはAzureでAzure Cache for Redisを提供しています。[ 51 ] AlibabaはAlibaba CloudでApsaraDB for Redisを提供しています。[ 52 ]

ライブラリインターフェース

Redisは様々なライブラリとインターフェースで接続されています。例えば、POCO C++ライブラリは、そのライブラリを通じてRedisとのインターフェースをサポートしていますPoco::Redis[ 53 ]

ユーザー

RedisはAdobe[ 54 ]、 Airbnb[ 55 ]、 Amazon[ 56 ] 、 Hulu[ 57 ] 、 OpenAI[ 58]、 Salesforce[ 59 ] 、 Shopify[ 60 ] 、 Tinder[ 61 ] 、 Twitter[ 62 ] [ 63 ] 、 Yahooなどの企業で使用されています。[ 64 ]

参照

参考文献

  1. ^ a bベルナルディ、ステファノ(2011年1月4日)。「シチリア島を拠点とするRedisの開発者、サルヴァトーレ・サンフィリッポ氏へのインタビュー」 EU -Startups、Menlo Media。
  2. ^ a b Haber, Itamar (2015年7月15日). 「Salvatore Sanfilippo: Redis Labsへようこそ」 . Redis .
  3. ^ 「7ページ中7ページ - Redis - Google Codeアーカイブ - Google Codeプロジェクトホスティング用の長期ストレージ」 code.google.com 2024年3月22日閲覧
  4. ^ 「リリース 8.4.0」。2025年11月18日。 2025年11月20日閲覧
  5. ^ 「Redis入門」。RedisはANSI Cで記述されており、Linux、*BSD、OS XなどのほとんどのPOSIXシステムで外部依存関係なしで動作します。
  6. ^ a b "LICENSE.txt" . GitHub . 2024年3月20日.
  7. ^ a b c「Redis、オープンソースへの回帰に大きく賭ける」InfoWorld2025年5月1日閲覧
  8. ^ a b c d「FAQ: Redis」 . Redis.io . 2022年2月12日閲覧
  9. ^ 「Google グループ」 . groups.google.com . 2022年2月25日閲覧
  10. ^ "Redis" . Redis . 2023年7月22日閲覧
  11. ^ 「オープンソースデータベースRedisの開発者、サルヴァトーレ・サンフィリッポ氏との会話」 VentureBeat 2016年6月20日 2021年6月29日閲覧
  12. ^ Kepes, Ben (2015年7月15日). 「Redis Labs、Redisの開発者Salvatore Sanfilippoを雇用」 . Network World . 2015年8月30日閲覧
  13. ^ a b Francisco, Thomas Claburn in San. 「データベースの巨匠Antirez氏、Redisへの転向を表明:ソフトウェアを管理する構造化された生活ではなく、コードを書く非構造化された生活を望んでいるようだ」 www.theregister.com . 2021年6月29日閲覧。
  14. ^ 「データベーススタートアップRedis LabsがRedisとしてブランド変更」 . SiliconANGLE . 2021年8月11日. 2021年8月11日閲覧
  15. ^ a b Claburn, Thomas. 「Redisには殺害の許可がある:オープンソースデータベースメーカーが一部コードをプロプライエタリ化する」 The Register . 2024年3月21日閲覧
  16. ^ Sanfilippo, Salvatore (2017年4月28日). 「RedisのTclプロトタイプ」 . GitHub Gist . 2018年10月8日閲覧
  17. ^ Wanstrath, Chris (2009年11月3日). 「Resqueの紹介」 .ブログ. 2018年10月8日閲覧
  18. ^ Krieger, Mike (2011年10月31日). 「Redisに数億ものシンプルなキーと値のペアを保存する」 Instagramエンジニアリングブログ. 2018年10月8日閲覧
  19. ^ Shapira, Gwen (2010年3月17日). 「VMwareがRedisの主要開発者を採用 – しかし、なぜ?」 .ブログ. 2016年9月25日閲覧
  20. ^ Sanfilippo, Salvatore (2010年3月15日). 「VMware: the new Redis home」 .ブログ. 2016年9月25日閲覧
  21. ^ Collison, Derek (2010年3月15日). 「VMware: The Console: VMware hires key developer for Redis」 . VMware Blog . 2010年3月22日時点のオリジナルよりアーカイブ。 2016年9月25日閲覧
  22. ^ Sanfilippo, Salvatore. 「Redisスポンサー」 . Redis.io . Redis . 2019年4月11日閲覧
  23. ^ Sanfilippo, Salvatore (2015年7月15日). 「Thanks Pivotal, Hello Redis Labs」 . antirez.com . 2019年4月3日閲覧
  24. ^ Baer,​​ Tony (2018年10月16日). 「MongoDBがオープンソースライセンスを変更する番だ」 . ZDNet . 2019年8月1日閲覧
  25. ^ Shoolman, Yiftach (2018年8月22日). 「RedisのライセンスはBSDであり、今後もBSDのままです」 . Redis.io . Redis . 2024年9月30日閲覧
  26. ^ 「Redis 5.0 が登場!」 2018年10月22日。
  27. ^ Finley, Klint (2019年7月31日). 「オープンソースソフトウェアにはいくつかの落とし穴がある」 . Wired . ISSN 1059-1028 . 2019年8月1日閲覧。 
  28. ^ Vaughan-Nichols, Steven J. 「Redis Labsが新しいライセンスのためにCommons条項を削除」 ZDNet 2019年8月1日閲覧
  29. ^ Gilbertson, Scott (2019年10月16日). 「2019年、複数のオープンソース企業が方針転換 ― それは正しい動きか?」 Ars Technica . 2019年10月16日閲覧
  30. ^ 「Redisの冒険の終わり -」 . antirez.com . 2020年11月10日閲覧
  31. ^ 「Redisがライセンス条項を厳格化、誰も満足せず」The Register . 2025年2月6日時点のオリジナルよりアーカイブ2025年5月1日閲覧
  32. ^ 「Linux FoundationがRedisフォークとしてValkeyをリリース」 Phoronix . 2025年5月1日閲覧
  33. ^ Clark, Lindsay (2025年4月10日). 「Redisの開発者の復帰がベクターセットデータ型で実を結ぶ」 The Register . 2025年9月30日閲覧
  34. ^ 「Redisハッシュ」 .ドキュメント. 2025年7月13日閲覧。
  35. ^ 「Redisベクトルセット」 .ドキュメント. 2025年7月13日閲覧
  36. ^ 「Redisクエリエンジン」 .ドキュメント. 2025年7月13日閲覧。
  37. ^ 「Redis Pub/sub」 .ドキュメント. 2025年7月13日閲覧
  38. ^ 「トランザクション」 . Docs . 2025年7月13日閲覧
  39. ^ 「Luaによるスクリプト作成」 .ドキュメント. 2025年7月13日閲覧
  40. ^ 「Redis 8.0」 .ドキュメント. 2025年7月13日閲覧。
  41. ^ Redis. 「ライセンス」 . Redis . 2025年7月13日閲覧
  42. ^ 「仮想メモリ」 Redis.io 20194月11日閲覧
  43. ^ 「Google Code アーカイブ - Google Codeプロジェクト ホスティング用の長期ストレージ」。code.google.com
  44. ^ 「Raspberry Pi 上の Redis: 非同盟地帯での冒険 - antirez」 . antirez.com .
  45. ^ 「Redis 3.0 リリースノート」 . GitHub . 2017年3月10日閲覧。
  46. ^ 「Cluster Spec」 。 2017年3月10日閲覧
  47. ^ 「Cluster Spec」 。 2017年3月10日閲覧
  48. ^ 「クラスターチュートリアル」 。 2017年3月10日閲覧
  49. ^ 「Redisの活用事例トップ5 - ObjectRocket」 . ObjectRocket . Rackspace. 2017年11月7日.
  50. ^ 「Memorystore:インメモリデータストア」 . Google Cloud . 2023年2月3日閲覧
  51. ^ 「Azure Redis Cache - Redis キャッシュ クラウド サービス - Microsoft Azure 。azure.microsoft.com
  52. ^ApsaraDB for Redis: キーバリューデータベースサービス - Alibaba Cloud」www.alibabacloud.com
  53. ^ "Namespace Poco::Redis" . docs.pocoproject.org . POCOプロジェクト. 2025年10月18日閲覧
  54. ^ 「AWS re:Invent 2014 | (SDD402) Amazon ElastiCache Deep Dive」 YouTube 2014年11月17日. 2023年7月22日閲覧
  55. ^ 「AWS re:Invent 2018: AirbnbのセルフマネージドRedisからElastiCache for Redisへの道のり(DAT319)」 YouTube 2018年11月28日. 2023年7月22日閲覧
  56. ^ 「Amazon GameOn データベース移行ケーススタディ – Amazon Web Services (AWS)」 Amazon Web Services, Inc. 2023年7月22日閲覧
  57. ^ 「Huluのケーススタディ」 Amazon Web Services, Inc. 2023年7月22日閲覧
  58. ^ 「Elevated API Errors」 . status.openai.com . 2023年10月19日. 2023年10月28日閲覧
  59. ^ 「Redisのハッシュをセットではなく使用してキャッシュサイズと運用コストを削減する」 Salesforceエンジニアリング。2021年2月25日。 2025年9月30日閲覧
  60. ^ 「Simplify: バッチ + キャッシュ最適化サーバーサイドストアフロントレンダリング」 Shopifyエンジニアリング、2023年5月3日。 2025年9月30日閲覧
  61. ^ 「Amazon ElastiCache を使用して Tinder で大規模な回復力を構築 | AWS データベースブログ」 . aws.amazon.com . 2020年1月30日. 2023年7月22日閲覧
  62. ^ 「TwitterでのRedisのスケーリング」 YouTube 2014年8月31日 2023年7月22日閲覧
  63. ^ 「Twitterでの大規模なRedisの使用 - TwitterのRashmi Ramesh氏 - RedisConf17 -」YouTube。2017年7月5日2023年7月22日閲覧。
  64. ^ 「AWS re:Invent 2022 - Yahoo!がAWSでインメモリワークロードのコストを最適化した方法(DAT321)」 YouTube 2022年12月2日 2023年7月22日閲覧

さらに読む