ElastiCache

AWS のマネージドインメモリキャッシュサービスで、Redis と Memcached をサポートする

AWSキャッシュ

ElastiCache とは

ElastiCache は、AWS のマネージドインメモリキャッシュサービスで、Redis と Memcached をサポートする。データベースの前段にキャッシュを配置し、読み取りレイテンシをミリ秒からマイクロ秒に短縮する。

Redis vs Memcached

Redis と Memcached の違いを以下にまとめる。

観点RedisMemcached
データ構造文字列、リスト、セット、ハッシュ、ソート済みセット文字列のみ
永続化あり (RDB, AOF)なし
レプリケーションあり (Multi-AZ)なし
Pub/Subありなし
Lua スクリプトありなし
用途セッション、ランキング、キュー単純なキャッシュ

ほとんどのケースで Redis を選択する。Memcached はマルチスレッドで単純なキャッシュに特化している。

キャッシュパターン

Cache-Aside (Lazy Loading)

async function getUser(id: string): Promise<User> {
  const cached = await redis.get(`user:${id}`);
  if (cached) return JSON.parse(cached); // キャッシュヒット

  const user = await db.get({ TableName: 'users', Key: { id } });
  await redis.set(`user:${id}`, JSON.stringify(user), 'EX', 3600); // 1時間 TTL
  return user;
}

Write-Through

async function updateUser(id: string, data: Partial<User>): Promise<void> {
  await db.update({ TableName: 'users', Key: { id }, ... });
  await redis.set(`user:${id}`, JSON.stringify({ ...existing, ...data }), 'EX', 3600);
}

ElastiCache Serverless

ElastiCache Serverless は、キャパシティの自動スケーリングとノード管理が不要なモードだ。ECU (ElastiCache Processing Units) 単位で課金される。

Lambda からの接続

Lambda から ElastiCache に接続するには、同じ VPC 内に配置する必要がある。

DynamoDB DAX との比較

DynamoDB DAX との主な違いを以下に比較する。

観点ElastiCache (Redis)DynamoDB DAX
対象汎用キャッシュDynamoDB 専用
APIRedis コマンドDynamoDB 互換
コード変更キャッシュロジックを自前実装エンドポイント変更のみ
データ構造豊富DynamoDB アイテム

よくある用途

よくある用途を以下にまとめる。

用途Redis の機能
セッション管理文字列 + TTL
ランキングソート済みセット (ZADD, ZRANGE)
レート制限INCR + EXPIRE
リアルタイム通知Pub/Sub

体系的に学ぶなら関連書籍を参照してほしい。

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

関連用語

関連する記事