Azure Cache for Redis を使用するかどうかを決定する
あなたのスポーツ Web サイトの背後にはデータベースがあり、クエリを実行することでデータが返されます。 しかし、特に大規模なスポーツ イベント中など、負荷が高くなると、パフォーマンスが低下します。 ホスト環境では、リソース使用量の増加はコストの増加につながります。 データをキャッシュすることで、Web サイトが適切かつ経済的に実行されるようになります。
キャッシュとは
キャッシュは、データを使用するアプリケーションに非常に近いメモリに、アクセス頻度の高いデータを格納する機能です。 キャッシュを使用すると、パフォーマンスを向上させ、サーバーの負荷を軽減できます。 Redis を使用して、メモリ内キャッシュを作成します。メモリ内キャッシュにより、待機時間を短縮することができ、パフォーマンスが向上する可能性があります。
Redis Cache とは
Redis (REmote DIctionary Server) Cache は、オープン ソースのメモリ内キー/値ペア ストアです。 Redis Cache は高速であり、文字列、ハッシュ、セットなどの一般的なデータ型を格納および操作できるため、一般に普及しています。 また、Python、C、C++、C#、Java、JavaScript などの複数の言語をサポートしているので、開発者にとって使いやすいものと見なされています。
Azure Cache for Redis とは
Azure Cache for Redis は広く普及しているオープン ソース Redis Cache を基盤にしています。 Microsoft が管理する、セキュリティで保護された専用の Redis Cache にアクセスできます。 Azure Cache for Redis を使用して作成されたキャッシュには、Azure 内のあらゆるアプリケーションからアクセスすることができます。 Azure Cache for Redis は通常、バックエンドのデータストアに大きく依存するシステムのパフォーマンスを向上させるために使用されます。
キャッシュされたデータは、データベースによってディスクから読み込まれるのではなく、Redis キャッシュを実行している Azure サーバーのメモリ内に配置されます。 キャッシュには高い拡張性もあります。 サイズと価格レベルはいつでも変更できます。
キャッシュに格納できるデータ型
Redis では、"バイナリ セーフな" 文字列を中心としてさまざまなデータ型がサポートされています。 "i-love-rocky-road" のような文字列から画像ファイルの内容まで、値に任意のバイナリ シーケンスを使用できます。 空の文字列も有効な値です。
- バイナリ セーフな文字列 (最も一般的)
- 文字列のリスト
- 順序付けられていない文字列セット
- ハッシュ
- 並べ替えられた文字列セット
- 文字列のマップ
各データ値は、キャッシュから値を検索する際に使用できる "キー" に関連付けられています。 値が小さいほど (100 KB 以下) Redis のパフォーマンスが向上するため、大きなデータは複数のキーに分割することを検討してください。 大きな値 (最大 500 MB) を格納することは可能ですが、ネットワーク待ち時間が増加します。また、キャッシュが古い値を期限切れにするように構成されていない場合、キャッシュとメモリ不足の問題が発生する可能性があります。
Redis キーとは
Redis キーもバイナリ セーフな文字列です。 キーの選択に関するガイドラインを次に示します。
- 長いキーは避けます:長いキーはバイト単位で比較する必要があるため、メモリの消費量が増え、必要な検索時間も長くなります。 バイナリ BLOB をキーとして使用する場合は、一意のハッシュを生成し、それをキーとして代わりに使用します。 キーの最大サイズは 512 MB ですが、このサイズのキーを使用しないでください。
- データを識別できるキーを使用します:たとえば、
sport:football;date:2008-02-02
はfb:8-2-2
よりも優れたキーです。 前者の方が読みやすく、余分なサイズはごくわずかです。 サイズと読みやすさのバランスを取ります。 - 規則を使用します:
sport:football
のように、適切な規則はobject:ID
です。
Redis Cache にデータが格納されるしくみ
Redis のデータは、ノードとクラスターに格納されます。
ノードは、データが格納されている Redis 内の領域です。
クラスターは、データセットが分割される 3 つ以上のノードのセットです。 クラスターは、ノードに障害が発生した場合、またはノードがクラスターの残りの部分と通信できない場合に操作を続行できるため、有用です。
Redis キャッシュ アーキテクチャとは
Redis キャッシュ アーキテクチャは、データをキャッシュ内に分散させる方法です。 Redis では、3 つの主要な方法でデータを分散させます。
- 単一ノード
- 複数ノード
- クラスター化
Redis キャッシュ アーキテクチャは、階層によって Azure 全体に分割されます。
Basic キャッシュ
Basic キャッシュでは、単一ノードの Redis キャッシュが提供されます。 すべてのデータセットが 1 つのノードに格納されます。 この階層は、開発、テスト、および重要ではないワークロードに最適です。
Standard キャッシュ
Standard キャッシュでは、複数ノード アーキテクチャが作成されます。 Redis によって、2 ノード プライマリ/セカンダリの構成でキャッシュがレプリケートされます。 Azure では、2 つのノード間のレプリケーションが管理され、プライマリ/セカンダリ レプリケーションを使用して運用環境対応のキャッシュが作成されます。
Premium レベル
Premium レベルには、Standard レベルの機能に加え、データの永続化、スナップショットの作成、データのバックアップ機能が含まれます。 このレベルでは、データを複数の Redis ノードとの間で共有する Redis クラスターを作成して、使用可能なメモリを増やすことができます。 Premium レベルでは、接続、サブネット、IP アドレス指定、ネットワークの分離を完全に制御するための Azure Virtual Network もサポートしています。 このレベルには、geo レプリケーションも含まれているため、データをそれを使用するアプリの近くに確実に配置することができます。
まとめ
データベースは大量のデータを格納するには適していますが、データの検索時に固有の待機時間があります。 クエリを送信すると、 サーバーはそのクエリを解釈して、データを検索して結果を返します。 サーバーには、要求を処理するための容量制限もあります。 要求が多すぎると、データ取得速度が低下する可能性があります。 キャッシュすると、頻繁に要求されるデータがメモリに格納されます。これにより、データベースのクエリを実行するよりも速くデータを返すことができるため、待機時間が短くなり、パフォーマンスが向上します。 Azure Cache for Redis を使用すると、セキュリティで保護された、スケーラブルな専用 Redis Cache にアクセスできます。これは Microsoft が管理し、Azure にホストされています。