Redis

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
Redis
開発元 Salvatore Sanfilippo[1][2]
初版 2009年5月10日(8年前) (2009-05-10
最新版 4.0.0 / 2017年7月14日(4か月前) (2017-07-14[3]
リポジトリ github.com/antirez/redis
プログラミング言語 ANSI C
対応OS クロスプラットフォーム
対応言語 英語
サポート状況 活動中
種別 データストア
ライセンス BSD
公式サイト redis.io
テンプレートを表示

Redisは、データ構造サーバーを実装するオープンソースソフトウェアプロジェクトである。いわゆるNoSQLデータベースの一つであり、Redis Labs英語版がスポンサーとなって開発されている[4]。ネットワーク接続されたインメモリデータベースでかつキー・バリュー型データベース英語版であり、オプションとして永続性を持つ。

歴史[編集]

Redisの名称はREmote DIctionary Serverを意味している[5]。元々の開発者はVMware所属(2010年3月当時)のエンジニアSalvatore Sanfilippoである[6][7][8]2013年5月からは、RedisはVMwareをスピンオフしたPivotal Software英語版にスポンサーされるようになった[9]2015年6月からは、Redis Labs英語版がスポンサーとなっている[10]

DB-Engines.comの月間ランキングでは、Redisはしばしば最もポピュラーなキー・バリュー型データベース英語版として評されている[11]。また、Redisは2015年のユーザーレビューによる満足度と市場でのプレゼンスの評価でNoSQLデータベースで4位を[12]Docker等の各種コンテナ上で使われているNoSQLデータベースとして1位を[13]、さらに上位50デベロッパーツール&サービスにおけるNoSQLデータベースとしても1位を獲得している[14]

サポートする言語[編集]

以下のような数多くの言語からの使用がサポートされている[15]

ActionScript, C, C++, C#, Chicken Scheme, Clojure, Common Lisp, D, Dart, Erlang, Go, Haskell, Haxe, Io, Java, JavaScript (Node.js), Julia, Lua, Objective-C, OCaml, Perl, PHP, Pure Data, Python, R,[16] Racket, Ruby, Rust, Scala, Smalltalk, Tcl

データタイプ[編集]

Redisではキーと値を紐づけて保存する。しかしRedisと他の構造型ストレージの重要な違いとして、Redisは文字列だけでなく以下のようなデータタイプをサポートする。

値のデータタイプは、各タイプごとに用意された操作(コマンド)で決定される。RedisはINTERSECTIONUNION、セットやリストの差分抽出といったサーバーサイド操作をアトミックにサポートする。

永続性[編集]

Redisでは一般的に全てのデータはメモリ上に格納される。バージョン2.4よりバーチャルメモリと名付けられたデータをディスク上に格納する機構が使用可能となったが[17]、これは後に非推奨となっている。永続性を実現するための方法としては、3.2現在では2つの手段が用意されている。1つ目はスナップショットと呼ばれるもので、スナップショットではメモリ上のデータは非同期で時折RDBダンプの形式でディスク上に書きこまれる。もう1つの手段が、1.1から存在するAOF (append-only file) と呼ばれるもので、こちらはメモリ上のデータが変更されるごとにトランザクションログが書きこまれる安全な方式となっている。Redisはトランザクションログの肥大化防止のためにバックグラウンドでこれを再生成することができる。

デフォルトでは、Redisは2秒間隔でデータをファイルシステムに書きこむようになっているが、必要であればより安全なオプションを使用することもできる。デフォルト設定でシステムが完全に失敗した場合でも、失われるデータは数秒間分に限られる。

レプリケーション[編集]

Redisはマスタースレーブ型のレプリケーションをサポートする。Redisサーバーのデータは複数台のスレーブにレプリケーションすることができる。スレーブはまた別のスレーブのマスターとなることもできる。Redisはシングルルートレプリケーションツリーをサポートする。Redisのスレーブには書き込みを許可する設定も可能で、その場合インスタンス間の不整合を許容する形になる。Redisは出版-購読型モデル (Publish/Subscribe) を完全に実装しており、マスターで出版 (Publish) されたメッセージは、スレーブに接続して購読 (Subscribe) しているクライアントにも到達する。レプリケーションは、読み込みのスケーラビリティ(書き込みは除く)とデータの冗長性向上に有効である。[18]

性能[編集]

データの永続性が必要ない場合において、Redisはメモリ上のみで動作することが可能であり、トランザクションコミットごとにディスクへの書き込みが発生するデータベースと比べて性能的に優位である[5]。Redisの操作はシングルスレッド上のシングルプロセスとして動作する。そのため、1つのRedisインスタンスでは例えばストアドプロシージャのように並列に処理を実行することはできない。

クラスタリング[編集]

Redisプロジェクトはクラスター仕様を持っており[19]、開発者のSanfilippoはRedis clusterの製品版ではキー空間の自動パーティショニングとホットリシャーディングをサポート、ただしシングルキー操作のみに対応、という投稿を行っている[20](β版が2013年末にリリース予定[21])。将来のバージョンでは、1000以上のノードをサポートし、ハートビート英語版と障害検知によりフォールトトレランスを実現、スレーブのマスターへの昇格、全ノードへの出版-購読モデルなどが構想されている[19][22]

関連項目[編集]

脚注[編集]

  1. ^ An interview with Salvatore Sanfilippo, creator of Redis, working out of Sicily, January 4, 2011, by Stefano Bernardi, EU-Startups
  2. ^ Salvatore Sanfilippo – Welcome to Redis Labs, July 15, 2015, By Itamar Haber, Redis Labs
  3. ^ Redis 4.0 release notes”. 2017年7月16日閲覧。
  4. ^ Kepes, Ben (July 15, 2015),"Redis Labs hires the creator of Redis, Salvatore Sanfilippo", Network World, Retrieved August 30, 2015.
  5. ^ a b FAQ, Redis”. 2017年3月16日閲覧。
  6. ^ Gwen Shapira (2010年3月17日). “VMware Hires Redis Key Developer – But Why?”. Blog. 2016年9月25日閲覧。
  7. ^ Salvatore Sanfilippo (2010年3月15日). “VMware: the new Redis home”. Blog. 2016年9月25日閲覧。
  8. ^ Derek Collison (2010年3月15日). “VMware: The Console: VMware hires key developer for Redis”. Blog. 2010年3月22日時点のオリジナルよりアーカイブ。2016年9月25日閲覧。
  9. ^ Salvatore Sanfilippo. “Redis Sponsors”. Redis Labs. 2016年9月25日閲覧。
  10. ^ Thanks Pivotal, Hello Redis Labs, July 15, 2015, By Salvatore Sanfilippo, Redis Labs
  11. ^ DB-Engines Ranking of Key-value Stores
  12. ^ Best NoSQL Databases: Fall 2015 Report from G2 Crowd
  13. ^ The Current State of Container Usage
  14. ^ Top 50 Developer Tools and Services of 2015
  15. ^ Redis language bindings
  16. ^ CRAN – Package rredis
  17. ^ Redis documentation "Virtual Memory", redis.io, accessed January 18, 2011.
  18. ^ ReplicationHowto – redis – A persistent key-value database with built-in net interface written in ANSI-C for Posix systems – Google Project Hosting
  19. ^ a b Redis Cluster Specification, Redis.io, Retrieved 2013-12-25.
  20. ^ News about Redis: 2.8 is shaping, I'm back on Cluster, Antirez Weblog - Salvatore Sanfilippo, Retrieved 2013-12-25.
  21. ^ Redis Download Page, Redis.io, Retrieved 2013-12-25.
  22. ^ Redis Cluster - a Pragmatic Approach to Distribution, Redis.io, Retrieved 2013-12-25.

外部リンク[編集]