A ElastiCache, Redis, Memcachedってデータベースのパフォーマンス問題を解いているときによく出てくるので内容をまとめてみました。
Amazon ElasiCacheはAWSが提供するマネージド インメモリーのKey-valueストアで、要はよくアクセスするデータをメモリーに保存して読み込み早くしようぜ!という用途で使われる。
ElastiCacheは2種類ある。
-
Memchached(メムキャッシュドじゃなくてメムキャッシュディーって読む)
まずはシンプルにインメモリーストア使って読み込み早くしたい!場合に第一選択肢になる。ただしMulti-AZ非対応、揮発性(電源オフしたらデータ消える)、フェイルオーバー非対応。 -
Redis
より高機能なインメモリーストアで、Multi-AZ対応、不揮発性、フェイルオーバー対応。さらにデータのランキングやソートも可能でよりエンタープライズ向け。
ElasitChachを検討する典型的なケース
データベースへのReadアクセスが頻繁に発生しパフォーマンスが悪化している、かつReadするデータが頻繁に変更されない場合はElastiCacheを設置することでパフォーマンスが改善される。
ElasitChachが解決策にならないケース
-
上記でも触れたが、Readするデータが頻繁に変わる場合はElastiCache自体が最新データを取得するためにデータベースにアクセスする必要がありパフォーマンス改善は見られない。
-
ReadではなくWriteの場合はElastiCacheではなくデータベース自体のコンピューティングリソースをスケールアップする。
-
複雑で処理が長いORALクエリの場合はRedshiftを代わりに検討する。