ElastiCache

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

AWSキャッシュ

ElastiCache とは

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

Redis vs Memcached

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

観点 Redis Memcached
データ構造 文字列、リスト、セット、ハッシュ、ソート済みセット 文字列のみ
永続化 あり (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 専用
API Redis コマンド DynamoDB 互換
コード変更 キャッシュロジックを自前実装 エンドポイント変更のみ
データ構造 豊富 DynamoDB アイテム

よくある用途

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

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

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

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

関連用語

関連する記事