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

Tair (Redis® OSS-Compatible):ApsaraDB for Redisの開発およびO&M標準

最終更新日:Sep 12, 2024

ApsaraDB for Redisは、高性能データベースサービスです。 このトピックでは、より効率的なビジネスシステムを設計し、ApsaraDB for Redisをより適切に使用するために従うことができる開発およびO&M標準について説明します。 この標準は、長年のQ&M経験に基づいてAlibaba Cloudによって開発され、ビジネスデプロイ、キー設計、SDKの使用、コマンドの使用、およびO&M管理のシナリオに適用されます。

ApsaraDB for Redisのパフォーマンス境界

図 1. ApsaraDB for Redisのパフォーマンス境界 Redis性能边界

リソースタイプ

説明

コンピューティングリソース

ワイルドカード文字、同時Luaスクリプト、1対多のPub/Subモデル、およびホットキーは、大量のコンピューティングリソースを消費します。 クラスターインスタンスの場合、これらの項目は、リクエストの偏りやデータシャードの使用不足を引き起こす可能性もあります。

ストレージリソース

ストリーミングジョブと大きなキーは、大量のストレージリソースを消費します。 クラスターインスタンスの場合、これらの項目はデータスキューやデータシャードの使用不足を引き起こす可能性もあります。

ネットワークリソース

データベース全体のスキャン (KEYSコマンドの実行) と、大きなキーと値の範囲クエリ (HGETALLコマンドの実行) は、大量のネットワークリソースを消費し、スレッドの輻輳を引き起こすことがよくあります。

重要

ApsaraDB for Redisの高並行性機能は、期待どおりにアクセスパフォーマンスを大幅に向上させませんが、ApsaraDB for Redisの全体的なパフォーマンスには影響します。 たとえば、ApsaraDB For Redisに大きな値を格納しても、アクセスパフォーマンスは大幅に向上しません。

クラスターインスタンスの場合、ホットキー、大きなキー、または大きな値も 歪んだストレージまたは歪んだ要求 本番環境では、ApsaraDB for Redisのパフォーマンスの境界に到達しないようにすることが重要です。 次の表では、ApsaraDB for Redisのビジネスデプロイ、キーデザイン、SDKの使用、コマンドの使用、およびO&M管理の標準について説明します。 これらの標準は、より効率的なビジネスシステムを設計し、ApsaraDB for Redisの機能をより有効に活用するのに役立ちます。

ビジネス展開基準

重要性

標準

説明

★★★★★

シナリオが 高速キャッシュ または メモリ内データベース

  • 高速キャッシュ: オーバーヘッドを減らし、データが追い出される可能性があるため、キャッシュ内のデータに強く依存しないように、キャッシュのみのシナリオで追加専用ファイル (AOF) の永続性を無効にすることを推奨します。 詳細については、「AOF持続性の無効化」をご参照ください。 たとえば、ApsaraDB For Redisデータベースがいっぱいになった後、データ削除ポリシーがトリガーされ、新しいデータを書き込むためのスペースが確保されます。 ビジネスの書き込みワークロードによっては、レイテンシが増加する可能性があります。

    重要

    データフラッシュバック機能を使用するには、AOF永続性を有効にする必要があります。 詳細については、「データフラッシュバックを使用した時点でのデータの復元」をご参照ください。

  • インメモリデータベース: ApsaraDB for Redis Enhanced Edition (Tair) の永続メモリ最適化インスタンスを選択することを推奨します。 永続的なメモリ最適化インスタンスは、コマンドレベルの永続性を提供します。 さらに、データベースでアラートを設定することで、メモリ使用量を監視できます。 詳細については、「アラート設定」をご参照ください。

★★★★★

ApsaraDB for Redisインスタンスの近くにビジネスをデプロイします。 たとえば、ApsaraDB For Redisインスタンスと同じ仮想プライベートクラウド (VPC) にあるElastic Compute Service (ECS) インスタンスにビジネスをデプロイできます。

ApsaraDB for Redisは、高性能データベースサービスです。 ただし、ビジネスサーバーをApsaraDB for Redisインスタンスから遠くにデプロイし、ビジネスサーバーがインターネット経由でインスタンスに接続されている場合、ネットワークの遅延によりApsaraDB for Redisのパフォーマンスが大幅に低下します。

説明

クロスリージョンデプロイの場合、グローバル分散キャッシュのgeoレプリケーション機能を使用して、geoディザスタリカバリまたはアクティブなgeo冗長性を実装し、ネットワーク遅延を削減し、ビジネス設計を簡素化できます。 詳細については、「概要」をご参照ください。

★★★★☆

サービスごとにApsaraDB for Redisインスタンスを作成します。

異なるサービスにApsaraDB for Redisインスタンスを使用しないでください。 たとえば、高速キャッシュサービスとインメモリデータベースサービスの両方にApsaraDB For Redisインスタンスを使用しないでください。 それ以外の場合、1つのサービスの削除ポリシー、低速クエリ、FLUSHDBコマンドの実行が他のサービスに影響します。

★★★★☆

期限切れのキーを削除する適切な削除ポリシーを設定します。

デフォルトの期限切れキーの削除ポリシーは volatile-lru 削除ポリシーの詳細については、「ApsaraDB For Redisインスタンスに設定できるパラメーター」をご参照ください。

★★★☆☆

ストレステストのデータと期間を管理します。

ApsaraDB for Redisはストレステストデータを削除しません。 ビジネスへの影響を防ぐには、ストレステストのデータと期間を自分で管理する必要があります。

主なデザイン基準

重要性

標準

説明

★★★★★

キー値を適切なサイズに設定します。 キーに格納される値のサイズは10 KB未満にすることを推奨します。

値が大きすぎると、データスキュー、ホットキー、高帯域幅、またはCPU使用率が高くなる可能性があります。 キー値が適切なサイズであることを確認することで、これらの問題を最初から防ぐことができます。

★★★★★

適切な長さの適切なキー名を設定します。

  • キー名:

    • 読み取り可能な文字列をキー名として使用します。 データベース名、テーブル名、フィールド名をキー名に結合する場合は、コロン (:) を使用して区切ることを推奨します。 例: project:user:001

    • ビジネスを説明する能力を損なうことなく、キー名を短くします。 たとえば、usernameuに短縮できます。

    • ApsaraDB for Redisでは、中括弧 {} はハッシュタグとして認識されます。 この場合、クラスターインスタンスを使用する場合は、キー名に中かっこを正しく使用して防ぐ必要があります。 データスキュー 詳細については、「Redisクラスターの仕様」をご参照ください。

      説明

      クラスターインスタンスの場合、RENAMEなどのコマンドを実行して複数のキーを管理し、ハッシュタグを使用してキーが同じデータシャードに存在するようにしない場合、コマンドを実行できません。

  • 長さ: キー名は128バイト以内、できれば短くすることを推奨します。

★★★★★

サブキーをサポートする複雑なデータ構造の場合、1つのキーに過剰なサブキーを含めることを避ける必要があります。 1つのキーに1,000未満のサブキーを含めることを推奨します。

説明

一般的な複雑なデータ構造には、ハッシュ、セット、Zsets、GEO構造、ストリーム、およびexHash、Bloom、TairGISなどのApsaraDB for Redis Enhanced Edition (Tair) に固有の構造が含まれます。

HGETALLなどのいくつかのコマンドの時間の複雑さは、サブキーの数に直接関係します。 過剰なサブキーは、コマンドの時間複雑性を増加させる。 時間の複雑さがO(N) 以上のコマンドを頻繁に実行すると、低速クエリ、データスキュー、ホットキーなどの問題が発生します。

★★★★☆

シリアル化メソッドを使用して、値を読み取り可能な構造に変換します。

プログラミング言語のバイトコードは、言語のバージョンが変更されたときに変更され得る。 ApsaraDB for Redisインスタンスにネイキッドオブジェクト (JavaオブジェクトやC# オブジェクトなど) を格納すると、ソフトウェアスタックのアップグレードが困難になる場合があります。 値を読み取り可能な構造に変換するには、シリアル化メソッドを使用することを推奨します。

SDKの使用基準

重要性

標準

説明

★★★★★

JedisPoolまたはJedisClusterを使用して、ApsaraDB for Redisインスタンスに接続します。

説明

TairJedisクライアントは新しいデータ構造のカプセル化クラスを提供するため、TairJedisクライアントを使用してApsaraDB for Redis Enhanced Edition (Tair) のDRAMベースのインスタンスに接続することを推奨します。 詳細については、「クライアントを使用したApsaraDB For Redisインスタンスへの接続」をご参照ください。

シングル接続を使用する場合、接続がタイムアウトした後、クライアントはApsaraDB for Redisインスタンスに自動的に再接続できません。 JedisPoolを使用してApsaraDB For Redisインスタンスに接続する方法の詳細については、「クライアントを使用してApsaraDB for Redisインスタンスに接続する」、「JedisPool最適化」、「JedisCluster」をご参照ください。

★★★★☆

クライアントに適切なフォールトトレランスメカニズムを設計します。

ネットワークの変動やリソースの使用量が多いと、接続のタイムアウトやクエリが遅くなる可能性があります。 これらのリスクを防ぐには、クライアントに適切なフォールトトレランスメカニズムを設計する必要があります。

★★★★☆

クライアントの再試行間隔を長く設定します。

リトライ間隔が200ミリ秒より短いなど、必要な間隔より短い場合、短時間で多数回のリトライが発生する可能性があります。 これにより、サービス雪崩が発生する可能性があります。 詳細については、「Redisクライアントの再試行メカニズム」をご参照ください。

コマンド使用基準

重要性

標準

説明

★★★★★

KEYS * コマンドを実行して実行されるような範囲クエリは避けてください。 代わりに、複数のポイントクエリを使用するか、SCANコマンドを実行してレイテンシを削減します。

範囲クエリは、サービスの中断、低速クエリ、または輻輳を引き起こす可能性があります。

★★★★★

拡張データ構造を使用して複雑な操作を実行します。 詳細については、「複数のRedisモジュールとの統合」をご参照ください。 Luaスクリプトを使用しないでください。

Luaスクリプトは大量のコンピューティングリソースとメモリリソースを消費し、マルチスレッド高速化をサポートしません。 過度に複雑または不適切なLuaスクリプトは、リソースの枯渇につながる可能性があります。

★★★★☆

パイプラインを使用して、データのラウンドトリップ時間 (RTT) を短縮します。

複数のコマンドをサーバーに送信し、クライアントがサーバーからの各応答に依存しない場合は、パイプラインを使用して一度にコマンドを送信できます。 パイプラインを使用する場合は、次の項目に注意してください。

  • パイプラインを使用するクライアントは、サーバーにのみ接続します。 パイプライン操作を通常の操作から分離するために、専用の接続を確立することを推奨します。

  • 各パイプラインは、適切な数のコマンドを含む必要がある。 各パイプラインを使用して100以下のコマンドを送信することを推奨します。

★★★★☆

トランザクションコマンドを使用します。 詳細については、「ApsaraDB For Redis Community Editionでサポートされているコマンド」をご参照ください。

トランザクションコマンドを使用する場合は、次の制限事項に注意してください。

  • リレーショナルデータベースのトランザクションとは異なり、ApsaraDB for Redisのトランザクションはロールバックできません。

  • クラスターインスタンスでトランザクションコマンドを実行する場合は、ハッシュタグを使用して、管理するキーが同じハッシュスロットに割り当てられるようにします。 また、ハッシュタグが引き起こす可能性のある歪んだストレージを防ぐ必要があります。

  • トランザクションコマンドをLuaスクリプトにカプセル化しないでください。これらのコマンドのコンパイルと読み込みは大量のコンピューティングリソースを消費するためです。

★★★★☆

Pub/Subコマンドグループを使用して大量のメッセージ配布タスクを実行しないでください。 詳細については、「ApsaraDB For Redis Community Editionでサポートされているコマンド」をご参照ください。

Pub/Subコマンドグループは、データの信頼性を確保するためのデータ永続性または確認応答メカニズムをサポートしていません。 多数のメッセージ配布タスクを実行するために、PubコマンドまたはSubコマンドを使用しないことを推奨します。 たとえば、これらのコマンドを使用して、サイズが1 KBを超えるメッセージを100を超えるサブスクライバークライアントに配布すると、サーバーリソースが使い果たされ、サブスクライバークライアントがメッセージを受信できなくなる可能性があります。

説明

パフォーマンスとバランスを改善するために、ApsaraDB for RedisはPubおよびSubコマンド用に最適化されています。 クラスターインスタンスでは、プロキシノードはチャネル名に基づいてコマンドのハッシュ値を計算し、対応するデータノードにコマンドを割り当てます。

O&Mマネジメント基準

重要性

標準

説明

★★★★★

さまざまなインスタンス管理操作の影響を理解します。

設定の変更または再起動は、ApsaraDB for Redisインスタンスのステータスに影響します。 例えば、一時的な接続がインスタンス上で発生することがある。 上記の操作を実行する前に、影響を理解していることを確認してください。 詳細については、「インスタンスの状態と影響」をご参照ください。

★★★★★

クライアントのエラー処理機能またはディザスタリカバリロジックを確認します。

ApsaraDB for Redisは、ノードのヘルスステータスを監視できます。 インスタンスのマスターノードが使用できなくなった場合、ApsaraDB for Redisは自動的にマスターレプリカスイッチオーバーをトリガーします。 インスタンスの高可用性を確保するために、マスターノードとレプリカノードのロールが切り替えられます。 クライアントが一般的に利用可能になる前に、マスターレプリカの切り替えを手動でトリガーすることをお勧めします。 これにより、クライアントのエラー処理機能またはディザスタリカバリロジックの検証に役立ちます。 詳細については、「マスターノードからレプリカノードへのワークロードの手動切り替え」をご参照ください。

★★★★★

時間のかかるコマンドやリスクの高いコマンドを無効にします。

本番環境では、コマンドの悪用が問題を引き起こす可能性があります。 たとえば、FLUSHALLコマンドはすべてのデータを削除できます。 KEYSコマンドは、ネットワーク輻輳を引き起こす可能性がある。 サービスの安定性と効率を向上させるために、特定のコマンドを無効にしてリスクを最小限に抑えることができます。 詳細については、「高リスクコマンドの無効化」をご参照ください。

★★★★☆

できるだけ早い機会に保留中のイベントを処理します。

ユーザーエクスペリエンスを向上させ、サービスのパフォーマンスと安定性を向上させるために、Alibaba Cloudは特定のサーバーのハードウェアとソフトウェアをアップグレードしたり、ネットワーク機能を置き換えたりする保留イベントを生成することがあります。 たとえば、データベースのマイナーバージョンを更新する必要がある場合に、保留イベントが生成されます。 Alibaba Cloudからイベント通知を受け取った後、イベントの影響を確認し、ビジネス要件を満たすようにイベントの予定時刻を変更できます。 詳細については、「保留中のイベントの照会と管理」をご参照ください。

★★★★☆

コアメトリックのアラートを設定して、インスタンスのステータスをより適切に監視します。

CPU使用率、メモリ使用率、帯域幅使用率などのコアメトリックのアラートを設定して、インスタンスのステータスをリアルタイムで監視します。 詳細については、「アラート設定」をご参照ください。

★★★★☆

ApsaraDB for Redisが提供するO&M機能を使用して、インスタンスのステータスを確認したり、リソース使用の例外を定期的にトラブルシューティングしたりします。

  • スローログを使用してタイムアウトの問題を解決する: スローログは、低速クエリと、クエリ要求を送信するクライアントのIPアドレスを見つけるのに役立ちます。 スローログは、タイムアウト問題に対処するための信頼できる基盤を提供します。

  • パフォーマンスモニタリングデータの表示: ApsaraDB for Redisは、さまざまなパフォーマンスメトリックをサポートしています。 これらのメトリクスを使用すると、ApsaraDB for Redisインスタンスのステータスに関する洞察を得ることができ、できるだけ早い機会に問題をトラブルシューティングできます。

  • 診断レポートの作成: 診断レポートは、パフォーマンスレベル、スキューリクエスト、スローログなど、ApsaraDB for Redisインスタンスのステータスを評価するのに役立ちます。 診断レポートは、ApsaraDB for Redisインスタンスの例外を特定するのにも役立ちます。

  • オフラインキー分析機能の使用: オフラインキー分析機能を使用して、ApsaraDB for Redisインスタンスの大きなキーを識別できます。 大きなキーのメモリ使用量、配布、およびTTLについても学ぶことができます。

  • リアルタイムキー統計機能の使用: リアルタイムキー統計機能は、ApsaraDB for Redisインスタンスのホットキーを識別し、データベースをさらに最適化するのに役立ちます。

★★★☆☆

監査ログ機能を有効にし、監査ログを評価します。

監査ログ機能を有効にすると、書き込み操作に関する監査統計が記録されます。 ApsaraDB for Redisでは、監査ログのクエリ、分析、およびエクスポートもできます。 これらの機能は、ApsaraDB for Redisインスタンスのセキュリティとパフォーマンスを監視するのに役立ちます。 詳細については、「監査ログ機能の有効化」をご参照ください。

重要

監査ログ機能を有効にすると、ApsaraDB for Redisインスタンスのパフォーマンスが5% から15% に低下する場合があります。 実際のパフォーマンス低下は、書き込み操作または監査操作の数によって異なります。 ビジネスで多数の書き込み操作が想定される場合は、トラブルシューティングなどのO&M操作を実行する場合にのみ、監査ログ機能を有効にすることをお勧めします。 これにより、パフォーマンスの低下を防ぐことができます。