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