😊

【初心者向け】Amazon ElastiCache 入門!完全ガイド

2023/03/10に公開

Amazon ElastiCache

☘️ はじめに

本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS 公式ドキュメントをご参照ください。

👀 Contents

Amazon ElastiCache とは

フルマネージドのインメモリキャッシングサービスで、Memcached または Redis プロトコルに互換性があります。

【AWS Black Belt Online Seminar】Amazon ElastiCache(YouTube)(39:21)

blackbelt-elasticache

古い資料(PDF)はこちら【AWS Black Belt Online Seminar】
Amazon ElastiCache-2017.12.14

blackbelt-elasticache-2017-320.jpg

Amazon ElastiCache サービス概要

Amazon ElastiCache ドキュメント

Amazon ElastiCache よくある質問

Amazon ElastiCache 料金

Redis

レディス と読みます。

Memcached

memory cache daemon の略でメムキャッシュディーと読みます。

ハンズオン

Amazon Aurora Serverless と Amazon ElastiCache を使用してリアルタイムなリーダーボードをビルドする

Amazon ElastiCache for Redis を使い、オンラインアプリケーション用の高速セッションストアを構築する(※英語のみ)

Amazon ElastiCache for Redis を使い、MySQL データベースのパフォーマンスを向上させる(※英語のみ)

ElastiCache のチュートリアルと動画

Memcached と Redis の比較

https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/SelectEngine.html

主な比較は次のとおりです。

key Memcached Redis
マルチスレッド Yes No
データ型 シンプル 複雑
自動フェイルオーバー No Yes
レプリケーション No Yes
バックアップと復元 No Yes
Pub/Sub No Yes

Memcached のほうが単純な Key-Value の処理だとパフォーマンスが優れるが、レプリケーション/自動フェイルオーバー/複雑な集計などが必要な場合は Redis を選択するケースが多くなると思います。

こちらにも詳しく記載があります。
https://aws.amazon.com/jp/elasticache/redis-vs-memcached/

どのように利用したらよいか?

  • キャッシュは揮発性のあるデータであるため、消えて困るデータは保存しないほうがよいです。 -結果整合性(分散データベース環境でデータが更新された際に、一定時間経過後には最終的な一貫性が担保されること)を前提とした設計を行う必要があります。
  • TTL(Time to Live, 有効期限)を設定しましょう。データを保存しすぎて、メモリが溢れてしまうといったことが発生します。TTL は長すぎても TTL が切れる前にメモリが溢れることにもなります。また、TTL が切れるタイミングが同じデータが多く存在すると、CPU 使用率が上昇することがあります。

DynamoDB で代用できる?

DynamoDB も Key-Value で低レイテンシーのサービスです。同じように代用もできるのではないかと考えます。
ただ、DynamoDB は可用性担保のため複数 AZ に保存しているので書き込みは遅くなります。また、DynamoDB はリクエスト数で課金されるため、頻繁に利用されるセッション情報などの場合はコストが急増したり、キャパシティが枯渇する可能性があります。DAX を利用することでこれらを回避することも出来ます。

つまり、基本的には永続化が不要であれば ElastiCache のほうがよいケースが多いと思われます。

Amazon ElastiCache for Memcached

構成イメージはこのようになります。クラスタ化されていますが、レプリケーションの機能はありません。
Redis Cluster/Replication

Amazon ElastiCache for Redis

クラスタモード有効/無効  ×  レプリケーション有/無のパターンがあります。
クラスタモードは複数のシャードにデータを分散させることが出来ます。クラスタモードが有効でもシャードを1つに設定することも可能です。

クラスタもレプリケーションもない単一の構成です。
Redis NonCluster/NonReplication

レプリケーションが有効な構成です。
Redis NonCluster/Replication

クラスタモードが有効ですが、レプリケーション無しの構成です。
Redis Cluster/NonReplication

クラスタモードが有効でレプリケーション有りの構成です。
Redis Cluster/Replication

自動フェイルオーバー

https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/AutoFailover.html

レプリケーションされている場合、自動的にフェイルオーバーが実行されます。

Amazon ElastiCache for Redis の Global Datastore

https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html

globaldatastore

Global Datastore for Redis 機能を使用すると、AWS リージョン全体で完全マネージド型、高速、信頼性、安全なレプリケーションを実行できます。

📖 まとめ

elasticache

GitHubで編集を提案

Discussion