#ElastiCacheとは
AWSが提供するインメモリー型データベースサービス。
ElastiCacheはAZサービスでVPCのサブネットグループに配置する。
ElastiCacheのユースケースとしては、RDSへのクエリ結果をキャッシングしてRDSへのアクセス負荷を軽減することにより、DBの読み書きの性能向上させる。
##キャッシュ とは
一度利用したデータなどを、その後また使う場合に高速にアクセスできるような形で保存しておくこと。
Webブラウザは、一度閲覧したページやそのページで使われている画像をキャッシュとしてハードディスクに保存している。同じページをあとから見る場合や、一度表示した画像やCSSファイル、JavaScriptファイルが他のページでも使われている場合には、改めてサーバーと通信してデータを取得するのではなく、ハードディスクから読み込むことで、表示を高速化している。
###インメモリキャッシュ?
「インメモリ・キャッシュ」とはメモリを活用して高速にキャッシュへのアクセスを可能にしたデータベースの仕組み
メインメモリキャッシュのデプロイ、運用、スケーリングをクラウド内で簡単に実行できるウェブサービスです。
このサービスは、低速のディスクベースのデータベースに完全に依存せずに、高速の管理されたメモリ内のキャッシュから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスを向上させます。
Amazon ElastiCacheは、KVS型のnoSQLであるMemcachedとRedisのプロトコルに準拠しているので、幅広い用途に使うことができます。
高速に値をRead/Writeできるインメモリキャッシュ型DB
マルチスレッドで動作するインメモリキャッシュDB
スナップショット機能がない
データを永続化できない
フェイルオーバーや復元ができない
Memcachedはシンプルなデータ(string)のみしか格納できません。よって、それ以外のデータを保存する場合にはアプリケーション側で格納できる型に変更する必要があります。また、扱えるコマンドも必要最低限しかなく、ほとんどデータの追加、削除以外は使わないと考えてよいでしょう(一応、データの変更や追記も可能です)。
##Redis
高速に値をRead/Writeできるインメモリキャッシュ型DB
シングルスレッドで動作するインメモリキャッシュDBで全てのデータ操作は排他的
スナップショット機能がある
###スナップショットとは?
-
スナップショットとは、ある時点でのソースコードや、ファイル、ディレクトリ、データベースファイルなどの状態を抜き出したもののことです。
-
バックアップをする際に、バックアップ処理中にファイルが更新されると、ファイルやディレクトリに不整合が起こることがあります。これを防ぐために使用されるのがスナップショットです。ある時点での状態を統一的に保持しているので、バックアップ時の時間的な不整合を防ぐことができます。
データを永続化できる
##特徴
RedisではString に加えて、List、Set、Sorted Set、Hash、Bit Array、HyperLogLog と豊富なデータ型を扱えます。さらに正規表現を用いたキーの曖昧検索を行えたり、トランザクションを用いてデータを更新できたりとget/set以外にも豊富な機能があります。
##可用性
ElastiCacheでは最小の構成単位を「ノード」と呼びます。EC2で言うところのインスタンスに相当するものです。このノードを組み合わせた集合体をクラスターと呼びます。ノードに直接接続してしまうと、もしそのノードに問題が発生した場合には新しいノードのアドレス(エンドポイント)をアプリケーション側で書き換えなくてはなりませんし、サービスの成長と共に負荷が上がってくるとノードの台数を増やして負荷やメモリ(キャッシュ)を分散したりといった要件も出てきます。クラスター構成を組んでおいて、常にアプリケーションはエンドポイントを見ておくようにすればノードの増減によってアプリケーションに変更を行う必要がありません。よって、運用を行う上でこのクラスター機能という観点は非常に大事になってくるのです。
参考
https://dev.classmethod.jp/cloud/aws/which-choice-redis-memcached/