すべてのプロダクト
Search
ドキュメントセンター

Tair (Redis® OSS-Compatible):DRAMベースのインスタンス

最終更新日:Sep 26, 2024

Tair DRAMベースのインスタンスは、ホットデータに対する同時並行性の高い読み取りおよび書き込み操作が多数含まれ、ApsaraDB for Redis Community Editionインスタンスよりも高いパフォーマンスが必要なシナリオに適しています。 ApsaraDB for Redis Community Editionインスタンスと比較して、DRAMベースのインスタンスは、マルチスレッドのパフォーマンスの向上や複数の拡張データ構造の統合など、より多くの利点を提供します。

メリット

項目

説明

互換性

  • DRAMベースのインスタンスはネイティブRedisと完全に互換性があり、ビジネスコードを変更する必要はありません。 これらは、Redis 7.0Redis 6.0、およびRedis 5.0との互換性を提供します。

パフォーマンス

  • DRAMベースのインスタンスはマルチスレッドモデルを使用し、同じ仕様のApsaraDB for Redis Community Editionインスタンスの3倍のパフォーマンスを提供します。 これにより、ホットデータの高頻度の読み取りおよび書き込み要求に対するパフォーマンスの制限がなくなります。

  • ネイティブのRedisデータベースと比較して、DRAMベースのインスタンスは、1秒あたり多数のクエリ (QPS) をより高いパフォーマンスで高速に処理できます。

  • DRAMベースのインスタンスは、同時実行性の高いシナリオで安定したパフォーマンスを保証し、ピーク時のトラフィックスパイクによって引き起こされる接続の問題を軽減します。

  • DRAMベースのインスタンスは、同期を高速化するために、I/Oスレッドで完全および増分データ同期タスクを実行します。

配置アーキテクチャ

  • DRAMベースのインスタンスは、標準、クラスタ、および読み書き分離アーキテクチャをサポートしています。

複数のRedisモジュールの統合

  • DRAMベースのインスタンスは、複数の社内Redisモジュールを統合して、ApsaraDB for Redisの適用範囲を拡張します。 これらのモジュールには、exString (Redis文字列機能を強化するコマンドを含む) 、exHashexZsetGISBloomDocTSCpcRoaringSearch、およびVectorが含まれます。 これらのモジュールは、ストレージ構造と適時性に関する心配を取り除き、アプリケーション開発に集中できるようにします。

エンタープライズグレードの機能

データセキュリティ

  • DRAMベースのインスタンスは、データセキュリティを強化するためのSSL暗号化をサポートします。 SSL暗号化の詳細については、「SSL暗号化の設定」をご参照ください。

  • DRAMベースのインスタンスは、透過的なデータ暗号化 (TDE) をサポートします。 TDEを使用してRedis Database (RDB) ファイルを暗号化および復号化し、データのセキュリティを確保できます。 TDEの詳細については、「TDEの有効化」をご参照ください。

シナリオ

Tair DRAMベースのインスタンスは、ライブビデオストリーミング、フラッシュセールス、オンライン教育などのシナリオに適しています。 次のセクションでは、一般的なシナリオについて説明します。

  • シナリオ1: フラッシュ販売中、キャッシュされたホットキーのQPSが200,000を超える場合があります。 ApsaraDB for Redis Community Editionインスタンスは、この要件を満たすことができません。

    Tair DRAMベースのインスタンスは、パフォーマンスの問題なしにフラッシュ販売中のリクエストを効率的に処理できます。

  • シナリオ2: ApsaraDB for Redis Community Editionクラスターインスタンスでは、データベーストランザクションとLuaスクリプトに制限があります。

    Tair DRAMベースのインスタンスは高いパフォーマンスを提供し、ApsaraDB for Redis Community Editionクラスターインスタンスでのコマンドの使用制限を排除します。

  • シナリオ3: 1つのマスターノードと複数のレプリカノードで構成される自己管理型Redisインスタンスを作成しました。 レプリカノードの数とO&Mコストは、ワークロードの増加に伴い増加します。

    読み書き分離アーキテクチャを使用するTair DRAMベースのインスタンスは、1つのデータノードと最大5つのリードレプリカを提供して、数百万のQPSを処理するのに役立ちます。

  • シナリオ4: 数千万のQPSを処理する自己管理Redisクラスターを作成しました。 データシャードの数とO&Mコストは、ワークロードの増加に伴い増加します。

    Tair DRAMベースのインスタンスは、クラスターを3分の2に縮小し、O&Mコストを大幅に削減できます。

スレッドモデルの比較

Threadingモデル

説明

図 1. シングルスレッドモデルのRedis 标准性能Redis实例的单线程模型

ApsaraDB for Redis Community EditionインスタンスとネイティブRedisデータベースは、シングルスレッディングモデルを使用します。 リクエスト処理中、ネイティブRedisデータベースとApsaraDB for Redis Community Editionインスタンスは、リクエストの読み取り、リクエストの解析、データの処理、レスポンスの送信を実行する必要があります。 このシナリオでは、ネットワークI/O操作とリクエストの解析により、使用可能なリソースのほとんどが消費されます。

図2. マルチスレッドモデルのTair 增强性能Redis实例的多线程模型

パフォーマンスを向上させるために、各Tair DRAMベースのインスタンスは複数のスレッドで実行され、これらのステップのタスクを並列に処理します。

  • I/O スレッドは、リクエストの読み取り、応答の送信、およびコマンドの解析に使用されます。

  • ワーカースレッドは、コマンドとタイマーイベントの処理に使用されます。

  • 補助スレッドを使用して、ノードのハートビートとステータスを監視し、高可用性を確保します。

各DRAMベースのインスタンスは、I/Oスレッド内の要求を読み取り、解析し、解析した要求をコマンドとしてキューに入れ、これらのコマンドをワーカースレッドに送信します。 次に、ワーカースレッドはコマンドを実行して要求を処理し、異なるキューを使用して応答をI/Oスレッドに送信します。

Tair DRAMベースのインスタンスは、最大4つの同時I/Oスレッドをサポートします。 ロック解除されたキューとパイプラインを使用して、I/Oスレッドとワーカースレッド間でデータを送信し、マルチスレッドのパフォーマンスを向上させます。

説明
  • マルチスレッドモデルは、String、List、Set、Hash、Zset、HyperLogLog、Geoなどの一般的なデータ構造および拡張データ構造のパフォーマンスを大幅に向上させます。

  • Pub/SubおよびブロッキングAPI操作は、ワーカースレッドでレプリケートされます。 この最適化によりAPI操作が加速され、スループットが向上し、パフォーマンスが約50% 向上します。

  • トランザクションとLuaスクリプトは、順番に実行されるように設計されています。 したがって、それらはマルチスレッディングモデルの恩恵を受けません。

説明

Redis 6.0のマルチスレッドモデルは、大量のCPUリソースを消費して、Redis 6.0以前のメジャーバージョンのシングルスレッドモデルよりも最大2倍高いパフォーマンスを実現します。 DRAMベースのインスタンスのReal Multi-I/Oモデルは、完全に高速化されたI/Oスレッドを提供し、多数の同時接続を維持し、スループットを線形に向上させます。

性能比較

ApsaraDB for Redisインスタンスは、ネイティブRedisデータベースと同じシングルスレッディングモデルを使用します。 シングルスレッディングモデルでは、各データノードは80,000から100,000のQPSをサポートします。 Tair DRAMベースのインスタンスはマルチスレッディングモデルを使用します。これにより、I/O、ワーカー、および補助スレッドがリクエストを並列に処理できます。 DRAMベースのインスタンスの各データノードは、ApsaraDB for Redis Community Editionインスタンスの各データノードの約3倍のパフォーマンスを発揮します。 次の表に、異なるアーキテクチャのApsaraDB for RedisインスタンスとTair DRAMベースのインスタンスとそのユースケースの比較を示します。

アーキテクチャ

ApsaraDB for Redisインスタンス

Tair DRAMベースのインスタンス

標準アーキテクチャ

これらのインスタンスは、単一ノードで必要なQPSの数が100,000を超える場合には適していません。

これらのインスタンスは、単一ノードで必要なQPSの数が100,000を超える場合に適しています。

クラスターアーキテクチャ

クラスターインスタンスは、複数のデータノードで構成されます。 各データノードは、標準インスタンスと同様のパフォーマンスを提供します。 データノードがホットデータを記憶し、ホットデータに対する多数の同時要求を受信した場合、データノードに記憶されている他のデータに対する読み出しおよび書き込み動作が影響を受ける可能性がある。 その結果、データノードの性能が低下する。

これらのインスタンスは、メンテナンスコストを削減して、ホットデータの読み書きに高いパフォーマンスを提供します。

読み書き分離アーキテクチャ

これらのインスタンスは、高い読み取りパフォーマンスを提供し、読み取り操作の数が書き込み操作の数よりも多いシナリオに適しています。 ただし、これらのインスタンスは多数の同時書き込み操作をサポートできません。

これらのインスタンスは高い読み取りパフォーマンスを提供し、多数の同時書き込み操作をサポートできます。 これらのインスタンスは、多数の書き込み操作を処理する必要があるが、読み取り操作の数が書き込み操作の数よりも多いシナリオに適しています。

複数のRedisモジュールの統合

オープンソースのRedisと同様に、ApsaraDB for Redis Community Editionは、String、List、Hash、Set、Sorted Set、Streamなどのさまざまなデータ構造をサポートしています。 これらのデータ構造は、一般的な開発ワークロードをサポートするのに十分ですが、高度なワークロードはサポートしません。 高度なワークロードを管理するには、アプリケーションデータを変更するか、Luaスクリプトを実行する必要があります。

DRAMベースのインスタンスは、複数の社内Redisモジュールを統合して、ApsaraDB for Redisの適用範囲を拡張します。 これらのモジュールには、exString (Redis文字列機能を強化するコマンドを含む) 、exHashexZsetGISBloomDocTSCpcRoaringSearch、およびVectorが含まれます。 これらのモジュールは、複雑なシナリオでのビジネス開発を簡素化し、ビジネスイノベーションに集中できるようにします。

説明

エンタープライズグレードの機能

エンタープライズグレードの機能

説明

ポイントインタイムによるデータ復元のためのデータフラッシュバック

データフラッシュバック機能を有効にすると、ApsaraDB for Redisは最大7日間、追加専用ファイル (AOF) バックアップデータを保持します。 保持期間中に、インスタンスを作成し、指定した時点のバックアップデータを新しいインスタンスに復元するために、正確な時点を指定できます。

プロキシクエリキャッシュ

プロキシクエリキャッシュ機能を有効にすると、設定されたプロキシノードはホットキーのリクエストとレスポンスをキャッシュします。 特定の有効期間内にクライアントから同じリクエストを受信した場合、ApsaraDB for Redisはキャッシュからリクエストに対するレスポンスを取得し、そのレスポンスをクライアントに返します。 このプロセス中、ApsaraDB for Redisはバックエンドデータシャードと対話する必要はありません。 詳細については、「プロキシクエリキャッシュを使用してホットキーによる問題に対処する」をご参照ください。

グローバル分散キャッシュ

Global Distributed Cache for Redisは、ApsaraDB for Redisに基づいて開発されたアクティブな地理的冗長性データベースシステムです。 Redisのグローバル分散キャッシュは、異なるリージョンの複数のサイトが同時にサービスを提供するビジネスシナリオをサポートします。 これは、企業がAlibabaのアクティブな地理的冗長性アーキテクチャを複製するのに役立ちます。

DTSを使用した双方向データ同期

Data Transmission Service (DTS) は、ApsaraDB for Redis Enhanced Edition (Tair) インスタンス間の双方向データ同期をサポートしています。 この同期ソリューションは、アクティブなジオ冗長性やジオディザスタリカバリなどのシナリオに適しています。 詳細については、「Tairインスタンス間の双方向データ同期の設定」をご参照ください。 DTSの詳細については、DTSとは何ですか?

よくある質問

クライアントが新しいデータモジュールからのコマンドをサポートしていない場合はどうすればよいですか?

クライアントでコマンドを使用する前に、アプリケーションコードで新しいデータモジュールからコマンドを定義できます。 これらのコマンドの組み込みサポートを提供するTairクライアントを使用することもできます。 詳細については、「Tairクライアント」をご参照ください。