Redis(REmote DIctionary Server)(IBM外のリンク)は主にアプリケーション・キャッシュまたは迅速に対応するデータベースとして使用されるオープンソースかつインメモリーのNoSQLキー/バリュー・ストアです。 Redisはディスクまたはソリッド・ステート・ドライブ(SSD)ではなく、メモリー内にデータを保存するため、非常に優れたスピード、信頼性、パフォーマンスを提供します。
アプリケーションが外部のデータ・ソースに依存していると、特にトラフィックが増加したりアプリケーションが拡張されたりする場合、これらのデータ・ソースの遅延とスループットがパフォーマンスのボトルネックの原因になる可能性があります。 このような場合、パフォーマンスを向上させるための方法の1つとして、アプリケーションに物理的に近い場所でのメモリー内でのデータの保存・操作があります。 Redisはこのタスクのために設計されています。つまり、Redisは、すべてのデータをメモリー内に保存することでデータの読み取り/書き取りの際にできる限り迅速にパフォーマンスを提供し、遅延を低くするために物理的にユーザーに近い場所にデータを配置できる組み込みの複製機能を提供します。
その他の注目すべきRedisの特徴には、複数のデータ構造のサポート、組み込みLuaスクリプティング、複数レベルのオンディスク・パーシスタンス、高可用性が含まれます。
Redisは特にアプリケーションのパフォーマンスを向上させるために設計された補助的なコンポーネントとして、「従来」のNoSQLデータ・ストアとは一線を画しています。 Redisの差別化要因となる機能には次のようなものがあります。
繰り返しになりますが、RedisはMongoDBやPostreSQLなどのNoSQLデータベースと異なり、ハード・ディスクやソリッド・ステート・ドライブではなく、サーバーのメイン・メモリーにデータを保存します。 この機能により、読み取り/書き込み操作を実行する場合の応答時間が大幅に速くなります。 この機能はまた、サービスとアプリケーション・ワークロードの高可用性と拡張性の確保にも役立ちます。高可用性については下記のRedis Sentinelとともに機能します。
Redisでは、Webクライアントでの処理に通常よりも時間がかかる可能性があるタスクをキュー処理できます。 マルチプロセス・タスク・キューイングは今日のWebベース・アプリケーションの多くで一般的になっており、Redisにより要求/応答サイクルのバックグラウンドで実行されるPythonで作成された自動化済みプロセスを容易に実装できるようになります。
Redisは、技術的にはキー/バリュー・ストアである一方、以下を含む複数のデータ・タイプとデータ構造をサポートする実際のデータ構造サーバーでもあります。
Redisは、開発者によるデータの操作とデータとの対話をサポートするネイティブ・クライアント統合機能を特長としています。 現在、100を超えるさまざまなオープンソース・クライアントをRedisクライアント・ライブラリーで使用でき、開発者は、容易に新しい統合を加えてその他の機能やプログラミング言語をサポートできます。
Redisの最も重要あるいは特筆すべき機能には以下が含まれます。
Redis Sentinel(IBM外のリンク)は、スタンドアロン型の分散システムであり、開発者がクライアント向けにインスタンスの可用性を高くするために調整を行う際に役立ちます。 Sentinelは、連続する監視プロセス、通知、自動フェイルオーバーを使用して、マスター・インスタンスとスレーブ・インスタンスに異常がある場合にユーザーに通知する一方で、必要に応じてアプリケーションの新規接続を自動的に再設定します。
Redis Cluster(IBM外のリンク)は、複数のノードの中でデータ・セットを自動的に分割する、Redisの分散型実装です。 また、データベース・デプロイメントのより高いパフォーマンスと拡張性をサポートすると同時に、ノードのサブセットがクラスターのその他の部分と通信できなくなった場合に継続的な運用を確保します。
Redisはパブリッシュ・コマンドとサブスクライブ・コマンド(Pub/Subコマンド)(IBM外のリンク)の使用をサポートしているため、ユーザーはすべてのアプリケーションとサービスにわたって高性能のチャット・サービスとメッセージング・サービスを設計できます。 ここには、不可分操作とブロック機能を実行するためにリスト・データ構造を使用する機能が含まれます。
Redisではプロセスの停止とネットワークのボトルネックに対処するために設計された永続ディスク・ストレージ(IBM外のリンク)が使用されます。 Redisでは、データの定期的なスナップショットを取得し、利用可能になった時点で変更を追加することで、データ・セットを持続できます。 その後、データベースの持続性と整合性を確保するために、これらのデータベース・バックアップをオンデマンドまたは自動間隔で生成するように、Redisを構成することができます。
RedisとMemcachedはどちらもオープンソースのインメモリー・データ・ストアですが、そのメリットと特長は異なります。 多くの場合、Memcachedは、必要なメモリー・リソースが多くないシンプルなアプリケーション用に好まれますが、データがシリアル化形式で保存される場合には制限があります。 Redisのデータ構造の使用により、大規模なデータ・セットを取り扱うときにより大きな効力が発揮され、特定のアプリケーション・シナリオにおける、キャッシュ・コンテンツの微調整と高い効率性の維持のためのより高い能力が提供されます。
Redisがインメモリー・データベース・ストアである一方、MongoDBはオンディスク・ドキュメント・ストアとして知られています。 どちらのソリューションも異なる目的のために構築されていますが、NoSQLデータベースのスピードと効率性を最大化するために併用されることが多くあります。 Redisはキャッシング機能を備えているため、必要なデータを非常に迅速に見つけることができ、MongoDBの効率性を向上させ、ほぼリアルタイムで頻繁なドキュメント更新を管理できるようにする、取り込みバッファーとして機能します。 大量のデータを保存するMongoDBの機能とデータを迅速に処理するRedisの機能を使用することで、この組み合わせは、さまざまなユースケースに利用できる強力なデータベース管理ソリューションを提供します。
企業がRedisを使用して作業する際にメリットを得られる、一般的なユースケースには以下が挙げられます。
Redisの利用開始は、特にRedis Desktop Manager(RDM)(IBM外のリンク)を使用する場合、非常にシームレスなプロセスです。 また、RedisとRDMはオープンソースであるため、活発な開発コミュニティーが常に活動し、運用効率の向上とサポート対象のツールと統合の継続的な進化に取り組んでいます。
Redisのインストールとセットアップの詳細については、コミュニティーのセットアップ手順に従ってください(IBM外のリンク)。
最新のアプリケーション・スタック用に設計された、オープンソースのインメモリー・キー・バリュー・ストアです。
クラウドネイティブ・アプリケーションに適したデータベースを選択する方法についてご説明します。
従来のデータベースよりも高い柔軟性を提供するデータベース設計の一種であるNoSQLについて詳しくご説明します。
このガイドでは、エンタープライズ・データベース管理ソリューションの一部として、MongoDBを使用する際の特性とメリットをご説明します。