Tair DRAM ベースのインスタンスは、ApsaraDB for Redis のパフォーマンス専有型ティアです。各データノードは、I/O、コマンド実行、モニタリングを専用のスレッドタイプに分離するマルチスレッドアーキテクチャにより、同等の仕様のコミュニティ版 Redis インスタンスの約 3 倍のスループットを実現します。ホットキートラフィック、同時書き込みの負荷、またはクラスターのメンテナンスコストがボトルネックになっている場合は、DRAM ベースのインスタンスを使用してください。
メリット
| メリット | 詳細 |
|---|---|
| 互換性 | Redis 7.0、Redis 6.0、および Redis 5.0 と完全な互換性があります。アプリケーションコードの変更は不要です。 |
| パフォーマンス | マルチスレッドアーキテクチャにより、同等の仕様のコミュニティ版 Redis インスタンスの約 3 倍の QPS を実現します。完全データ同期と増分データ同期は I/O スレッドで実行され、同期を高速化します。 |
| 同期モード | 準同期レプリケーションモードをサポートします。マスターノードがクライアントの更新を実行した後、ログをレプリカノードに複製し、レプリカが受信を確認した後にのみ応答を返すため、高可用性スイッチオーバー中のデータ損失を防ぎます。 |
| デプロイアーキテクチャ | 標準、クラスター、読み書き分離。 |
| 拡張データ構造 | 複数の自社開発 Tair モジュールを統合しています:exString ( CAS/CAD コマンドを含む)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search、および Vector。 |
| エンタープライズレベルの機能 | データフラッシュバック、プロキシクエリキャッシュ、および Redis グローバル分散キャッシュ。 |
| データセキュリティ | SSL (Secure Sockets Layer) 暗号化と、RDB (Redis Database) ファイルの暗号化および復号のための TDE (透過的データ暗号化) をサポートします。 |
DRAM ベースのインスタンスの利用シーン
以下のいずれかに該当する場合は、DRAM ベースのインスタンスを選択してください:
単一ノードの QPS が 100,000 を超える場合:コミュニティ版 Redis ノードの QPS は 80,000~100,000 が上限です。DRAM ベースのインスタンスは、パフォーマンスを低下させることなく、200,000 を超えるホットデータの QPS を処理できます。
フラッシュセールまたはトラフィックスパイク:マルチスレッドモデルはバーストトラフィックを吸収し、安定したパフォーマンスを維持するため、ピーク時の接続問題を回避します。
クラスターコマンドの制限:コミュニティ版 Redis のクラスターインスタンスには、データベーストランザクションと Lua スクリプトに制限があります。DRAM ベースのクラスターインスタンスでは、これらの制限がありません。
書き込み負荷が高い読み書き分離:コミュニティ版 Redis の読み書き分離は、大量の読み取りには対応できますが、大規模な同時書き込み負荷には耐えられません。読み書き分離モードの DRAM ベースのインスタンスは、1 つのデータノードと最大 5 つの読み取り専用レプリカで、数百万 QPS の読み取りと書き込みの両方をサポートします。
クラスターコストの削減:自己管理の Redis クラスターのノード数が増え続けている場合、DRAM ベースのクラスターインスタンスに切り替えることで、クラスターサイズを 3 分の 2 に削減し、O&M コストを大幅に削減できます。
アーキテクチャ選択ガイド
| アーキテクチャ | コミュニティ版 Redis | DRAM ベースのインスタンス |
|---|---|---|
| 標準 | 単一ノードの QPS が 100,000 を超える場合には適していません | 100,000 を超える単一ノードの QPS を処理できます |
| クラスター | ノード上のホットデータが、同じノード上の他のデータのパフォーマンスを低下させます | メンテナンスコストを削減し、ホットデータへの高性能なアクセスを実現します |
| 読み書き分離 | 高い読み取りスループット、限定的な同時書き込み能力 | 高い読み取りスループットと高い同時書き込み能力 |
仕組み
マルチスレッドアーキテクチャ
コミュニティ版 Redis は、1 つのスレッドがすべてのネットワーク I/O とコマンド実行を処理するシングルスレッドモデルを使用しています。これは中程度の負荷には十分ですが、高い同時実行性のもとではボトルネックになります。
Tair DRAM ベースのインスタンスは、以下の 3 種類のスレッドに作業を分散します:
I/O スレッド — リクエストの読み取り、コマンドの解析、応答の送信
ワーカースレッド — コマンドとタイマーイベントの実行
補助スレッド — 高可用性のためのノードのハートビートとステータスのモニタリング
各インスタンスは、最大 4 つの I/O スレッドの同時実行をサポートします。ロックフリーキューとパイプラインが I/O スレッドとワーカースレッド間でデータを転送し、マルチスレッドのパフォーマンスを最大化します。

*図 1. Redis のシングルスレッドモデル — 1 つのスレッドがリクエストの読み取り、リクエストの解析、データ処理、応答を処理します。*

*図 2. Tair のマルチスレッドモデル — I/O、ワーカー、補助スレッドがタスクを並行して処理します。*
マルチスレッドモデルによって高速化される操作:
| 操作タイプ | 高速化 |
|---|---|
| 一般的なデータ構造 (String、List、Set、Hash、Sorted Set、HyperLogLog、Geo) | はい — 大幅な改善 |
| 拡張データ構造 (Tair モジュール) | はい |
| pub/sub およびブロッキング API オペレーション | はい — スループットが約 50% 向上し、ワーカースレッドで複製されます |
| トランザクションと Lua スクリプト | いいえ — 順次実行する必要があります |
Redis 6.0 のマルチスレッドは、パフォーマンスを最大 2 倍向上させますが、高い CPU リソースを消費します。それに対し、DRAM ベースのインスタンスの Real Multi-IO アーキテクチャは、I/O とコマンド実行の両方を徹底的に高速化します。これにより、接続の影響に対する耐性が強化され、スループット容量が線形に増加します。
拡張データ構造
標準の Redis データ型 (String、List、Hash、Set、Sorted Set、Stream) は、ほとんどの一般的なユースケースをカバーします。地理空間クエリ、時系列分析、ベクトル検索、確率的データ構造などのより複雑なシナリオでは、標準の Redis では通常、アプリケーションデータを変更するか、Lua スクリプトを作成する必要があります。
DRAM ベースのインスタンスは、これらの機能を追加する複数の自社開発 Tair モジュールをネイティブに統合しています。
Redis バージョン別のモジュールの可用性:
| モジュール | Redis 7.0 または 6.0 | Redis 5.0 |
|---|---|---|
| exString | はい | はい |
| exHash | はい | はい |
| exZset | はい | はい |
| GIS | はい | はい |
| Bloom | はい | はい |
| Doc | はい | はい |
| TS | はい | はい |
| Cpc | はい | はい |
| Roaring | はい | はい |
| Search | はい | はい |
| Vector | はい | いいえ |
エンタープライズレベルの機能
| 機能 | 説明 |
|---|---|
| データフラッシュバック | Tair は AOF (追記専用ファイル) のバックアップデータを最大 7 日間保持します。秒単位で任意の時点を指定して、新しいインスタンスにデータを復元できます。 |
| プロキシクエリキャッシュ | プロキシノードは、設定可能な有効期間内にホットキーの応答をキャッシュします。繰り返されるリクエストは、バックエンドのデータシャードにアクセスすることなく、キャッシュから提供されます。 |
| Redis グローバル分散キャッシュ | 異なるリージョンにある複数のサイトが同時にトラフィックを処理することをサポートする、アクティブ地理的冗長性データベースシステムです。 |
| DTS による双方向データ同期 | Data Transmission Service (DTS) は、アクティブ地理的冗長性およびジオディザスタリカバリのシナリオのために、Tair インスタンス間の双方向データ同期をサポートします。設定手順については、「Tair インスタンス間の双方向データ同期の設定」をご参照ください。 |
よくある質問
使用しているクライアントが Tair モジュールで提供されるコマンドをサポートしていません。どうすればよいですか?
使用する前にアプリケーションコードでモジュールコマンドを定義するか、組み込みサポートを含むクライアントに切り替えてください。互換性のあるクライアントのリストについては、「クライアント」をご参照ください。