AWS Redisサービスの使い方

キャッシュは、エンジニアがデータを迅速に保存し、アクセスできるようにする強力なツールです。キャッシュにより、エンジニアはデータソースの容量を拡張し、予期せぬワークロードの急増を緩和し、外部データソースに障害が発生した場合でもデータの提供を継続できるため、アプリケーションの可用性が向上します。

分散キャッシュの一般的な使用シナリオには次のようなものがあります。

  • 高度にスケーラブルな Web サービスでユーザー セッション データを保存および取得します。

  • クエリを高速化し、プライマリ データベースの過負荷を回避するために、リレーショナル データベースまたは非リレーショナル データベースの前にキャッシュ レイヤーを展開します。

Redis は、分散キャッシュソリューションとして広く使用されており、AWS ビッグデータおよびデータベースアーキテクチャで重要な役割を果たしているオープンソースの NoSQL データストレージシステムです。

この記事では、Redis について詳しく説明し、AWS での ElastiCache Redis デプロイメントを使用して、プロジェクトで分散キャッシュの低レイテンシーと高パフォーマンスを活用する方法について説明します。

 

Redis とは何ですか?

Redisは、オープンソースのインメモリデータ構造キャッシュおよびストレージシステムであり、Redisコミュニティによって継続的に開発・保守されています。高速インメモリデータベースやアプリケーションキャッシュとして広く利用されています。Redisは、キャッシュとデータベースの両方の機能を持つという点でユニークです。

Redisはデータセットをメモリに保存し、永続性が必要な場合、または再起動後にリカバリが必要な場合のみディスクに書き込みます。このアプローチにより、Redisは読み取りおよび書き込み操作においてミリ秒レベルのレイテンシを実現し、多様なデータ構造、組み込みのレプリケーション、クラスタリング機能をサポートします。

運用の観点から見ると、Redis のデプロイ、監視、スケーリングは困難な場合がありますが、AWS ElastiCache for Redis などのマネージドサービスを使用すると、これらのタスクが大幅に簡単になります。

Amazon ElastiCache for Redis とは何ですか?

AWS ElastiCache は、Redis と Memcached をサポートするマネージドキャッシュサービスです。Redis 向けには、ElastiCache はフルマネージドプラットフォームを提供し、ユーザーは高性能な分散型インメモリデータストレージクラスターを迅速にデプロイ、管理、拡張できます。

このサービスは、マシンのメンテナンス、ソフトウェアのパッチ適用、監視、障害復旧、バックアップといった運用上の負担を大幅に軽減します。ElastiCache はネイティブの Redis データ構造、API、クライアントと完全に互換性があるため、既存の Redis アプリケーションをコード変更なしで移行できます。

ElastiCacheはクラスターモードと非クラスターモードの両方をサポートし、自動フェイルオーバーとクロスAZデプロイメントにより、高い可用性と信頼性を実現します。オンラインクラスター調整機能により、ユーザーはダウンタイムなしでオンデマンドでキャパシティをスケールアップまたはスケールダウンできます。

セキュリティの面では、ElastiCache には VPC サポートが組み込まれており、転送中および保存中のデータの暗号化を提供しながら、Redis の AUTH 認証メカニズムと互換性があります。

Amazon ElastiCache for Redis を使い始める方法

 

ステップ1: AWS環境を構成する

ElastiCache for Redis を使用する前に、AWS 環境を準備する必要があります。

  1. EC2インスタンスをデプロイする
    このインスタンスはサンプルウェブアプリケーションの実行に使用されます。設定を簡素化するために、EC2 クラスターと ElastiCache クラスターを同じ VPC にデプロイできます。
    詳細については、AWS 公式ドキュメントの EC2 作成プロセスを参照してください。

  2. EC2パブリックIPv4 DNSアドレスをコピーするこれは、後でサンプル アプリケーションにアクセスするときに使用されます。

  3. セキュリティグループルールの構成

    • 同じセキュリティ グループから Redis のデフォルト ポート (6379) へのアクセスを許可します。

    • ローカル コンピューターから Web アプリケーションにアクセスするには、任意の IP (0.0.0.0/0) から TCP ポート 5000 へのアクセスを許可します。

 

ステップ2: AWS ElastiCache Redisクラスターを作成する
  1. 開ける ElastiCacheコンソールをクリックし、「今すぐ始める」をクリックします。EC2インスタンスと同じリージョンを選択してください。

  2. 新しいクラスターを作成するには、 レディス エンジンとして。スケールアウトが必要な場合は、 クラスターモード(最大 500 個のマスター ノードをサポートします)。

  3. デフォルトのアベイラビリティーゾーンの場所を選択し、クラスターに名前を付けます (例: エラスティックキャッシュ-Redis)。

  4. インスタンスタイプを選択します。例: キャッシュ.t2.マイクロ(無料レベルでご利用いただけます)。

  5. デフォルトの構成を維持することも、必要に応じてエンジン バージョン、複数のレプリカ、複数のアベイラビリティー ゾーンなどのオプションを調整することもできます。

  6. 存在する 詳細設定 VPC フォルダに新しいサブネット グループを作成し、EC2 と同じ VPC を選択するようにします。

  7. 存在する 安全 パネルで、EC2 と同じセキュリティ グループを選択します。

  8. 自動バックアップ オプションをオフにすることもできます (この例では必要ありません)。

  9. 設定を確認したら、クリックします 作成する

  10. 作成が完了したら、コンソールにコピーします 主要評価項目 Web アプリケーションが Redis に接続するために使用するアドレス。

 

ステップ3: WebアプリケーションのセッションストレージとしてRedisを使用する

Redisは、スケーラブルなウェブアプリケーションのセッション管理シナリオにおいて、ユーザーセッションデータの保存と維持によく使用されます。次の例は、FlaskアプリケーションのセッションストアとしてRedisを使用する方法を示しています。

  1. EC2インスタンスへのSSH接続、依存関係をインストールするには、次のコマンドを実行します。

    sudo yum インストール git -y
    sudo yum python3 をインストール -y
    sudo pip3 仮想環境をインストール
    ギット クローン https://github.com/aws-samples/amazon-elasticache-samples/
    CD amazon-elasticache-samples/セッションストア
    仮想環境 venv
    ソース ./venv/bin/activate
    pip3 インストール -r 要件.txt
  2. 環境変数を設定します。

    輸出 REDIS_URL="redis://<プライマリエンドポイント>"
    輸出 FLASK_APP=例4.py
    輸出 SECRET_KEY=ランダムな値
  3. Flask アプリケーションを実行します。

    フラスコ実行 -h 0.0.0.0 -p 5000 --reload

    ブラウザを開いてアクセスしてください http:// :5000、デフォルトの 3 つのエンドポイントが表示されます。//ログイン/ログアウト

    ログイン後、ページを更新すると訪問数の増加を確認できます。10秒以内に更新しないと、カウンターはリセットされます。
    アプリケーションは、ログイン時にユーザーがセッションデータを保存するための一意のRedisキーを生成し、 TTL(10秒)、有効期限が切れると自動的に消去されます。

 

要約する

キャッシュ ソリューションを実装すると、クラウド ネイティブ アプリケーションの全体的なパフォーマンスが大幅に向上し、アクセス遅延によって発生するコストと非効率性が削減されます。
使用 Redis 用 AWS ElastiCacheAWS ホスティングの利点を活用して運用上の負担を軽減しながら、Redis のスピード、シンプルさ、柔軟性を享受できます。

さらに、 NetApp クラウドボリューム ONTAPは、AWS、Azure、Google Cloud 上でエンタープライズ クラスのストレージ管理機能を提供し、高可用性、データ保護、Kubernetes 統合などの機能をサポートします。
クラウドで実行される NoSQL データベースやビッグ データ分析クラスターの場合、永続ディスク データのサポートを提供するためにも使用できるため、複雑な Redis クラスターのストレージ管理がより効率的になります。

さらに詳しく

何が必要か教えてください