1.ElastiCacheとは
ElastiCacheはMemcachedとRedis(レディス)の2種類のエンジンをサポートしているステートフルなインメモリデータベースサービス。そのため、node.jsのアプリケーションを実行することはできません。
1.1.インメモリ
インメモリキャッシュは高速で低レイテンシが求められるアプリケーションに適しており、非インメモリキャッシュは大容量データを長期間保持する必要がある場合に適しています。
1.2.ステートフルとステートレス
ステートフルシステムは、各リクエスト間の状態を保持し、ユーザーの連続した操作を追跡するのに適しています。一方、ステートレスシステムは、各リクエストが独立しており、スケーラビリティとリソース効率の点で優れています。
セッション情報をEC2などのサーバーに保管するとステートフルになってしまいスケーラビリティがなくなるため、これを回避する方法として、ElastiCache(もしくはDynamoDB)にセッション情報を保管するシナリオもあります。
2.Memcached
Memcachedとは、キーと値のための高速なメモリのキャッシュサーバーです。
Pythonでも簡単にimportできます。
!pip install python-memcached
import memcached
MemcachedはマルチAZに対応していません。
3.Redis
Memcachedとは異なり、Redisは次のことを実行できます。
- ディスクにデータを保存できるので信頼性が高く、再起動できる
- 古いデータを消さずに残しておける
- 単純な文字列以外のデータ構造もある
3.1.Amazon ElastiCache for Redis
Amazon ElastiCache for Redis は、ミリ秒未満のレイテンシーを実現する非常に高速なインメモリデータストアで、インターネット規模のリアルタイムアプリケーションを強化できます。(ネットゲームのランキングのリアルタイム更新など)
セッションをクライアントが接続しているEC2インスタンスだけで管理している場合、サーバーがダウン時すると継続して処理を行うことが出来なくなってしまいます。しかしながら、Amazon ElastiCache For Redisでセッション管理しておくと継続して処理が行えるようになります。
データの永続性を提供するため、ディスク上にデータを保存できます。また、データ構造を操作できるため、より複雑なデータ処理が可能です。
Pub/Subをサポートしています。
予算のことを特に心配しなくてよい時はこれを使います。
3.2.Redisに関するQiitaの記事
以下の記事が凄く参考になりました。
Pythonでも簡単にimportできます。
!pip install redis
import redis
conn = redis.Redis()