tencent cloud

Tencent Cloud Distributed Cache (Redis OSS-Compatible)

クライアントプログラム設計ガイドライン

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-20 18:20:58
AI翻訳
合理的なクライアント設計はインスタンスの性能を十分に発揮でき、ビジネスの安定性とセキュリティを向上させます。本稿では、DBの再利用回避、接続プールの使用、サーキットブレーカー機能の追加、適切なパスワードの設定という4つの側面から、クライアントプログラムの設計指針を紹介します。

一、DB再利用の回避

核心要件: 複数のアプリケーションで同じインスタンスを共有しないでください。
原因: メモリ淘汰ルールが存在するため、複数のアプリケーションのKeyが相互に影響し合い、キャッシュヒット率が低下します。また、あるアプリケーションに大量のアクセスが発生した場合、他のアプリケーションの正常な利用にも影響を及ぼします。
推奨事項: 関連性のない業務を分割し、公共データはサービス化方式で共有します。

二、接続プールの使用

インスタンスのアクセス時間には、ネットワーク接続時間、コマンド解析時間、コマンド実行時間が含まれます。接続プールを使用すると、接続を再利用してネットワーク接続時間を節約でき、高同時実行シーンにおける推奨方法です。

アーキテクチャ推奨事項

標準アーキテクチャ: 複数のプロキシノードの性能を十分に発揮するために、クライアントは接続プールモードを採用することを推奨します。クライアントの接続数が多すぎる場合は、共有接続方式を使用して性能低下を軽減できます。
クラスタアーキテクチャ: 特に単一シャードの接続数設定値とシャード数が大きい場合には、ClusterNodeAdaptiveパラメータを有効にして、適応型接続管理と接続数の動的調整を実現することを推奨します。また、接続の確立と切断のオーバーヘッドを削減するために、共有接続モードを有効にすることも推奨します。

接続プールの主要パラメータ

以下の3つの重要なパラメータは同じ値に設定することを推奨します。これにより、接続規模の安定を維持し、接続の頻繁な作成と破棄を回避します:
パラメータ
説明
接続プールの最大接続数
ビジネス同時実行数を制御します。上限に達した後は新しい接続を作成せず、過剰なシステムリソースの消費を回避します。
接続プールの最大アイドル接続数
保持できる最大アイドル接続数です。上限を超えた分はクローズされ、削除されてリソースが解放されます。
接続プールの最小アイドル接続数
保持する必要がある最小アイドル接続数です。この値を下回ると新しい接続が作成され、高負荷時でも十分な利用可能接続が確保されます。

言語別接続プール注意事項(ホット接続の回避)

接続プールが常に同じ「最もホットな接続」を再利用して負荷が偏ることを避けるために、各言語の推奨事項は以下の通りです:
言語 / クライアント
問題及びアドバイス
接続プールコード例
Golang go-redis
接続使用後はキューの末尾に戻し、接続取得時はキューの先頭から取得して、常にホット接続が取得されることを避けることを推奨します。Lifoパラメータで制御できます(trueの場合は先頭から取得し、falseの場合は末尾から取得します)。v8.11.5以降のバージョンではキューの接続方式が修正されています。現在の主流であるv9.xバージョンでは、より均等な接続再利用戦略がデフォルトで採用されているため、アップグレードして使用することを推奨します。
Golang redigo
公式接続プールは先頭からの接続の取得と返却のみをサポートしているため、最もホットな接続が継続的に使用され、CLBを実現できません。均等化が必要な場合は、ソースコードpool.goを変更し、pushBackメソッドとLifoメンバー変数を追加できます。
Java Jedis
接続プールはデフォルトでLIFO(後入れ先出し)を採用しており、接続の使用が不均衡になりやすくなります。接続プールをFIFO(setLifo(false)、先頭から取得し、末尾に返却)に設定して、接続確立の順序の公平性を確保することを推奨します。
Java Lettuce
接続プールをFIFO(poolConfig.setLifo(false))に設定し、keepaliveやtcpUserTimeoutなどのパラメータと組み合わせて接続の堅牢性を高め、障害接続の検出と排除を高速化することを推奨します。
Java Redisson
接続プール関連のパラメータを適切な値に設定し、フェイルオーバーシナリオに応じて再接続、タイムアウト、CLBのパラメータを最適化し、高可用性アーキテクチャにおける接続の堅牢性を向上させることを推奨します。
説明:
クライアント側からRedisコマンドのレイテンシーを監視し、性能問題を特定する必要がある場合は、公式実践チュートリアルSpring BootベースのRedisクライアント監視の構築を参照できます。

三、サーキットブレーカー機能の追加

適用シーン: 高同時実行シーン。
方法: クライアント側にサーキットブレーカー処理を追加します(例:Netflix Hystrixまたは同種のサーキットブレーカーコンポーネント)。
役割: サーキットブレーカーはクラスタノードの状態をリアルタイムに検出し、あるノードに異常が発生した場合、そのノードへのリクエスト送信を停止します。これにより、単一ノードの障害がシステム全体の雪崩を引き起こすことを防ぎます。

四、適切なパスワードの設定

データベースアクセスにパスワードを設定することでデータの安全性を確保できます。複雑度の要件は以下の通りです:
文字数は[8, 30]です。
少なくとも小文字、大文字、数字、特殊文字(()~!@#$%^&*-+=_|{}[]:;<>,.?/`)のうち2種類を含みます。
スラッシュ(/)で始めることはできません。
製品はSSL暗号化認証アクセスをサポートしています。機密データのシナリオでは有効にすることをお勧めします。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック