5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS キャッシュ活用 ElastiCache

Last updated at Posted at 2020-03-04

#ElastiCacheとは
AWSが提供するインメモリー型データベースサービス。
ElastiCacheはAZサービスでVPCのサブネットグループに配置する。
ElastiCacheのユースケースとしては、RDSへのクエリ結果をキャッシングしてRDSへのアクセス負荷を軽減することにより、DBの読み書きの性能向上させる。
##キャッシュ とは
一度利用したデータなどを、その後また使う場合に高速にアクセスできるような形で保存しておくこと。

Webブラウザは、一度閲覧したページやそのページで使われている画像をキャッシュとしてハードディスクに保存している。同じページをあとから見る場合や、一度表示した画像やCSSファイル、JavaScriptファイルが他のページでも使われている場合には、改めてサーバーと通信してデータを取得するのではなく、ハードディスクから読み込むことで、表示を高速化している。

###インメモリキャッシュ?
「インメモリ・キャッシュ」とはメモリを活用して高速にキャッシュへのアクセスを可能にしたデータベースの仕組み

スクリーンショット 2020-03-04 16.24.23.png

メインメモリキャッシュのデプロイ、運用、スケーリングをクラウド内で簡単に実行できるウェブサービスです。
このサービスは、低速のディスクベースのデータベースに完全に依存せずに、高速の管理されたメモリ内のキャッシュから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスを向上させます。
スクリーンショット 2020-03-04 15.41.44.png
スクリーンショット 2020-03-04 16.22.04.png

Amazon ElastiCacheは、KVS型のnoSQLであるMemcachedRedisのプロトコルに準拠しているので、幅広い用途に使うことができます。

##Memcached
スクリーンショット 2020-03-04 16.44.25.png

 高速に値をRead/Writeできるインメモリキャッシュ型DB

 マルチスレッドで動作するインメモリキャッシュDB

 スナップショット機能がない

 データを永続化できない

 フェイルオーバーや復元ができない

Memcachedはシンプルなデータ(string)のみしか格納できません。よって、それ以外のデータを保存する場合にはアプリケーション側で格納できる型に変更する必要があります。また、扱えるコマンドも必要最低限しかなく、ほとんどデータの追加、削除以外は使わないと考えてよいでしょう(一応、データの変更や追記も可能です)。
##Redis
スクリーンショット 2020-03-04 16.43.05.png

 高速に値を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/

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?