Redis
概要
Redisの名称はREmote DIctionary Server を意味している。
DB-Engines.comの月間ランキングでは、Redisはしばしば最もポピュラーなキーバリュー型データベース として評されている。また、Redisは2015年 のユーザーレビューによる満足度と市場でのプレゼンスの評価でNoSQL データベースで4位を、Docker 等の各種コンテナ上で使われているNoSQLデータベースとして1位を、さらに上位50デベロッパーツール&サービスにおけるNoSQLデータベースとしても1位を獲得している。
沿革
2009年 2月4日、RedisのプロトタイプをSalvatore SanfilippoがTcl で実装して、Fabio Pitrolaにメールした。
2009年2月26日、Salvatore Sanfilippo(ハンドルネームantirez)がC言語で実装し直して、最初のβ版をリリースした。
2010年 3月15日、Salvatore SanfilippoがVMware に入社し、VMwareがスポンサーとなった。
2013年 5月からは、RedisはVMwareをスピンオフしたPivotal Software (英語版 ) にスポンサーされるようになった。
2013年11月4日、Garantia DataがGarantiaをRedisDBに改名した。この変更は、Redisの開発者であるSalvatore SanfilippoやPivotal Softwareに事前通告はなく、その後Garantiaに戻した。
2014年 1月29日、Garantia DataがRedis Labs (英語版 ) に社名変更した。
2015年 7月15日、Redisの開発者のSalvatore SanfilippoがRedis Labsに入社し、Redis Labsがスポンサーとなった。
2017年 2月7日、Redis Enterpriseを発表。
2018年 、Salvatore SanfilippoがRedisの知的財産と商標をRedis Labsに譲渡した。
2020年 6月30日、Redisの開発者のSalvatore SanfilippoがRedis Labsを退職した。
2021年 8月11日、Redis LabsはRedis Ltd.に社名変更した。
2024年 3月20日、バージョン7.4より三条項BSDライセンス からソースアベイラブル である「Redis Source Available License v2」と「Server Side Public License v1 」のデュアルライセンスに変更した。その結果、Linux Foundationは「Valkey 」という名前でフォークを作成した。これにより、コミュニティのメンテナ、コントリビュータ、ユーザーがRedisデータベースのオープンソース版の開発を継続できるようになった。
リリース
2009年 03月 - Redis 1.0がリリース。
2010年 09月 - Redis 2.0がリリース。
2015年 04月 - Redis 3.0がリリース。
2017年 04月 - Redis 4.0がリリース。
2017年09月 - Redis EnterpriseがRedis 4.0をサポート開始。
2017年11月 - Redis Enterprise 5.0を提供開始。
2018年 10月 - Redis 5.0がリリース。Redis Streamが導入される。
2020年 04月 - Redis 6.0がリリース。ACLのサポートを拡大。
2020年04月 - Redis Enterprise 6.0を提供開始。
2022年 04月 - Redis 7.0がリリース。新コマンド、オプションを追加。
対応するプログラミング言語
以下のような数多くのプログラミング言語 からの使用が可能である。
ActionScript , Bash , C , C++ , Chicken Scheme , Clojure , Common Lisp , C# , Crystal , D , Dart , Delphi , Deno , Elixir , Emacs Lisp , Erlang , gawk , GNU Prolog , Go , Haskell , Haxe , Io , Java , JavaScript (Node.js ), Julia , Lua , Nim , Objective-C , OCaml , Perl , PHP , Pure Data , Python , R , Racket , Ruby , Rust , Scala , Smalltalk , Tcl
データタイプ
Redisではキーと値を紐づけて保存する。しかしRedisと他の構造型ストレージの重要な違いとして、Redisはバイナリ列(文字列 , string)だけでなく以下のようなデータタイプをサポートする。Redis ではバイナリ列のことを string と呼んでいるが、特に文字の使用だけに限った物ではない。
バイナリ列(string)のリスト (両端キュー として利用可能)
バイナリ列(string)の集合 (ソートされない重複のないコレクション)
バイナリ列(string)のソートされた集合(浮動小数点数 のスコアによりソートされた重複のないコレクション)
バイナリ列(string)のキーと値からなるハッシュテーブル
ビットマップ
集合の濃度 (元の個数)。分布を表現。
値のデータタイプは、各タイプごとに用意された操作(コマンド)で決定される。RedisはINTERSECTION やUNION 、セットやリストの差分抽出といったサーバーサイド操作をアトミック にサポートする。
永続性
Redisでは一般的に全てのデータはメモリ上に格納される。バージョン2.4よりバーチャルメモリと名付けられたデータをディスク上に格納する機構が使用可能となったが、これは後に非推奨となっている。永続性 を実現するための方法としては、3.2現在では2つの手段が用意されている。1つ目はスナップショットと呼ばれるもので、スナップショットではメモリ上のデータは非同期で時折RDBダンプの形式でディスク上に書きこまれる。もう1つの手段が、1.1から存在するAOF (append-only file) と呼ばれるもので、こちらはメモリ上のデータが変更されるごとにトランザクションログ が書きこまれる安全な方式となっている。Redisはトランザクションログの肥大化防止のためにバックグラウンドでこれを再生成することができる。
デフォルトでは、Redisは2秒間隔でデータをファイルシステムに書きこむようになっているが、必要であればより安全なオプションを使用することもできる。デフォルト設定でシステムが完全に失敗した場合でも、失われるデータは数秒間分に限られる。
レプリケーション(複製)
Redisはマスター・レプリカ・レプリケーション をサポートする。Redisサーバーのデータは、複数台のレプリカに複製できます。レプリカは、他のレプリカのマスターになることができます。これにより、Redisは単一ルートのレプリケーションツリーを実装できます。Redisのレプリカには書き込みを許可する設定も可能で、その場合インスタンス間の不整合を許容する形になる。Redisは出版-購読型モデル (Publish/Subscribe) を完全に実装しており、マスターで出版 (Publish) されたメッセージは、レプリカに接続して購読 (Subscribe) しているクライアントにも到達する。レプリケーションは、読込みの拡張性(書込みは除く)とデータの冗長性向上に有効である。
性能
データの永続性 が必要ない場合において、Redisはメモリ上のみで動作することが可能であり、トランザクション のコミット ごとにディスクへの書き込みが発生するデータベース と比べて性能的に優位である。Redisの操作はシングルスレッド上のシングルプロセスとして動作する。そのため、1つのRedisインスタンスでは例えばストアドプロシージャ のように並列に処理を実行することはできない。
クラスタリング
この節は更新が必要とされています。 この節には古い情報が掲載されています。編集の際に新しい情報を記事に反映 させてください。反映後、このタグは除去してください。 (2015年3月 )
Redisプロジェクトはクラスター 仕様を持っており、開発者のSanfilippoはRedis clusterの製品版ではキー空間の自動パーティショニングとホットリシャーディング をサポート、ただしシングルキー操作のみに対応、という投稿を行っている(β版が2013年末にリリース予定)。将来のバージョンでは、1000以上のノードをサポートし、ハートビート (英語版 ) と障害検知によりフォールトトレランス を実現、スレーブのマスターへの昇格、全ノードへの出版-購読モデルなどが構想されている。
Redis Stack
Redis に加えて下記の物を加えた物を Redis Stack として配布している。これらのソフトウェアもソースアベイラブル で配布されている。
RedisInsight - Redis のデータ内容を見られたりする管理ツール
RedisJSON - JSON データベース
RediSearch - 全文検索、緯度経度検索、ベクトルデータベースによる類似文章検索など
RedisTimeSeries - 時系列データベース
RedisBloom - 確率分布 の扱い
以下は、かつて Redis Stack に含まれていた物。
RedisGraph - グラフデータベース。Cypher をクエリ言語として採用している。2023年7月5日にサポート終了が発表された。
以下は、かつて開発されていた物。Redis Stack にも含まれていない。
脚注
↑ An interview with Salvatore Sanfilippo, creator of Redis, working out of Sicily , January 4, 2011, by Stefano Bernardi, EU-Startups
↑ Salvatore Sanfilippo – Welcome to Redis Labs , July 15, 2015, By Itamar Haber, Redis Labs
1 2 “Page 7 of 7 - Redis - Google Code Archive - Long-term storage for Google Code Project Hosting. ”. code.google.com . 2024年3月22日閲覧。
↑ “Releases ”. GitHub. 2025年1月15日閲覧。
↑ “Redis Licensing Overview | Redis ”. Redis . 2024年3月22日閲覧。
1 2 Trollope, Rowan. “Redis Adopts Dual Source-Available Licensing | Redis ”. Redis . 2024年3月22日閲覧。
1 2 “FAQ, Redis ”. 2017年3月16日閲覧。
1 2 Redis - AWS、2020年6月10日閲覧
↑ DB-Engines Ranking of Key-value Stores
↑ Best NoSQL Databases: Fall 2015 Report from G2 Crowd
↑ The Current State of Container Usage
↑ Top 50 Developer Tools and Services of 2015
↑ LMDB -- First version of Redis written in Tcl
↑ Gwen Shapira (2010年3月17日). “VMware Hires Redis Key Developer – But Why? ”. Blog . 2016年9月25日閲覧。
↑ Salvatore Sanfilippo (2010年3月15日). “VMware: the new Redis home ”. Blog . 2016年9月25日閲覧。
↑ Derek Collison (2010年3月15日). “VMware: The Console: VMware hires key developer for Redis ”. Blog . 2010年3月22日時点のオリジナル よりアーカイブ。2016年9月25日閲覧。
↑ Salvatore Sanfilippo. “Redis Sponsors ”. Redis Labs. 2016年9月25日閲覧。
↑ Kepes, Ben (2013年11月4日). “UPDATED - Was Garantia, Is Now RedisDB. Either Way NoSQL Is Hot. But Open Source Firestorm Ensues ” (auto). Forbes . 2024年3月22日閲覧。
↑ “Database Provider Garantia Data Makes Another Name Change, This Time To Redis Labs | TechCrunch ”. TechCrunch . 2024年3月22日閲覧。
↑ Thanks Pivotal, Hello Redis Labs , July 15, 2015, By Salvatore Sanfilippo, Redis Labs
↑ “Redis Creator, Salvatore Sanfilippo (Antirez), Joins Redis ”. Redis . 2024年3月22日閲覧。
↑ Haber, Itamar. “Salvatore Sanfilippo - Welcome to Redis | Redis ”. Redis . 2024年3月22日閲覧。
↑ Gupta, Manish. “Introducing Redis Enterprise | Redis ”. Redis . 2024年3月22日閲覧。
↑ “Redis Labs Becomes, Simply, Redis | Redis ”. Redis . 2024年3月22日閲覧。
↑ “The end of the Redis adventure - < antirez> ”. antirez.com . 2024年3月22日閲覧。
↑ Gottlieb, Yossi. “New Governance for Redis | Redis ”. Redis . 2024年3月22日閲覧。
↑ Bengal, Ofer. “Thank You, Salvatore Sanfilippo | Redis ”. Redis . 2024年3月22日閲覧。
↑ Kreisman, Dylan. “From Our Founders: Becoming One Redis | Redis ”. Redis . 2024年3月22日閲覧。
↑ “LICENSE.txt ” (英語). GitHub . 2024年4月28日閲覧。
↑ “Linux Foundation Launches Open Source Valkey Community ”. 2024年4月29日閲覧。
↑ “Page 6 of 7 - Redis - Google Code Archive - Long-term storage for Google Code Project Hosting. ”. code.google.com . 2024年3月22日閲覧。
↑ “Page 4 of 7 - Redis - Google Code Archive - Long-term storage for Google Code Project Hosting. ”. code.google.com . 2024年3月22日閲覧。
↑ Redis 3.0 release notes
↑ Redis 4.0 release notes
↑ Abutbul, Aviad (2017年9月26日). “Redis 4.0 Now Available on Redis Enterprise ”. Redis . 2022年7月23日閲覧。
↑ B, Cihan (2017年11月27日). “Announcing Redis Enterprise Pack 5.0 GA ”. Redis . 2022年7月23日閲覧。
↑ Redis (2018年10月22日). “Redis 5.0 is here! ”. Redis . 2022年7月23日閲覧。
↑ Redis (2020年4月30日). “Diving Into Redis 6.0 ”. Redis . 2022年7月23日閲覧。
↑ Magrafta, Alon (2020年4月30日). “Rediscover Redis Security with Redis Enterprise 6.0 ”. Redis . 2022年7月23日閲覧。
↑ Haber, Itamar (2022年4月27日). “Redis 7.0 Is Out! ”. Redis . 2022年7月23日閲覧。
↑ “Clients ”. Redis . 2023年5月19日閲覧。
↑ CRAN – Package rredis
↑ Redis documentation "Virtual Memory" , redis.io , accessed January 18, 2011.
↑ ReplicationHowto – redis – A persistent key-value database with built-in net interface written in ANSI-C for Posix systems – Google Project Hosting
1 2 Redis Cluster Specification , Redis.io , Retrieved 2013-12-25.
↑ News about Redis: 2.8 is shaping, I'm back on Cluster , Antirez Weblog - Salvatore Sanfilippo , Retrieved 2013-12-25.
↑ Redis Download Page , Redis.io , Retrieved 2013-12-25.
↑ Redis Cluster - a Pragmatic Approach to Distribution , Redis.io , Retrieved 2013-12-25.
↑ “About Redis Stack ”. Redis . 2023年5月19日閲覧。
↑ “Redis Licensing Overview | Redis ”. Redis . 2023年9月4日閲覧。
↑ “RedisInsight | The Best Redis GUI ”. Redis . 2023年5月21日閲覧。
↑ “RedisJSON | NoSQL Document Database ”. Redis . 2023年5月21日閲覧。
↑ “RediSearch | Full-Text Search Engine for NoSQL Database ”. Redis . 2023年5月21日閲覧。
↑ “RedisTimeSeries | A NoSQL Time Series Database ”. Redis . 2023年5月21日閲覧。
↑ “RedisBloom | Bloom & Cuckoo Filtering for Redis ”. Redis . 2023年5月21日閲覧。
↑ Kogan, Lior. “RedisGraph End-of-Life Announcement ”. Redis . 2023年9月4日閲覧。
↑ “RedisGears/RedisGears: Dynamic execution framework for your Redis data ”. 2025年1月15日閲覧。
↑ “RedisAI/RedisAI: A Redis module for serving tensors and executing deep learning graphs ”. 2025年1月15日閲覧。