ElastiCache Redisについて知ろう

ElastiCache Redisについて知ろう

はじめに

ElastiCacheは分散インメモリキャッシュサービスの構築・管理及びスケーリングを容易に実施することができるサービスです。キャッシュクラスタを数クリックで起動ができ、フルマネージド型でモニタリング、自動障害検出、 復旧、拡張、パッチ適用、バックアップに対応し高可用性を実現されています。ElastiCacheには現在2種類のエンジンMemcachedとRedisから選択が可能となっており、今回はRedisについてまとめます。

インメモリキャッシュとは

ElastiCacheはインメモリキャッシュ型のデータベースと呼ばれています。つまりメモリ+キャッシュを合わせたデータベースとなっています。まずメモリとキャッシュが何なのかについてそれぞれ説明致します。

メモリ

PCでデータを保存するのにはメモリかハードディスクなどがあります。メモリはディスクと比べて大幅に高速に処理することが可能な装置のことです。

キャッシュ

キャッシュとは一度アクセスしたデータを保存して次回アクセス時に高速にアクセスできるようにする仕組みです。データベースから画像などのデータを取得するにはそれなりに時間がかかるので、これによりサーバ負荷の軽減、通信網の交通量を下げることができます。このキャッシュ自体をメモリに保存してやりとりをしようというのがインメモリキャッシュになります。

MemcachedとRedisの特徴

MemcachedとRedisの特徴を大まかに以下にまとめました。

Redis

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

・シングルスレッドで動作するインメモリキャッシュDBで全てのデータ操作は排他的

・スナップショット機能がある

・データを永続化できる

Memcached

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

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

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

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

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

この2つの利用方法をより詳細に見ていきます。それぞれ以下にまとめました。シンプルに利用する場合はMemcachedを利用するが、それ以外はRedisを利用する場合が多いです。

Redis

・複雑なデータ型が必要である

・インメモリデータセットをソートまたはランク付けする必要がある

・読込処理の負荷に対して、リードレプリカにレプリケートする必要がある

・pub/sub機能が必要

・自動的なフェイルオーバーが必要である

・キーストアの永続性が必要である

・バックアップと復元の機能が必要である

・複数のデータベースをサポートする必要がある

Memcached

・シンプルなデータ型が必要である

・複数のコアまたはスレッドを持つ大きなノードを 実行する必要がある。

・システムでの需要の増減に応じてノードを追加または削除するスケールアウトおよびスケールイン 機能が必要である。

・データベースなどのオブジェクトをキャッシュする必要がある。

・キーストアの永続性は必要ない

・バックアップと復元の機能が必要でない

・複数のデータベースを利用できない

Redisでできること

Redisにはその他に位置情報クエリ、Luaスクリプトによる操作やpub/subモデルを活用可能です。Luaスクリプトというスクリプト言語を使って操作が可能でこれは移植性が高く、高速な実行速度などの特徴を持っています。位置情報クエリは経度・緯度などの位置情報をクエリ処理することが可能で、検索距離や検索範囲の指定可能です。pub/subモデルは「イベントを起こす側」と「イベント処理を行う側」を分離するのがpub/subモデルなのですが、メッセージ処理やイベント処理で活用することができます。

ユースケース

ElastiCacheのユースケースはデータアクセスを高速にしたいケースがあれば検討する必要があります。キャッシュすべきデータを特定して、他のDBサーバと組み合わせて利用するのが標準的な構成方法です。またアプリケーションでデータの即時反映が必要なケースなどに活用すると使い勝手がよいです。例えばアプリケーション上でユーザー同士のマッチング処理、ゲームイベント終了時のランキング表示などです。他にもチャットアプリで使っていく場合があります。pub/sub機能を使ってチャットポットpub/subサーバとしてElastiCacheを使っていく時です。

まとめ

もし高速でデータ処理したい、pub/sub機能を使いたい時はElastiCache Redisを使用することをお勧めします。またそれ以外で簡素で使いたい場合はMemcachedを使っていくといった形になっていきます。
ただElastiCacheは作成するだけで料金が掛かってしまうので検証する際は注意してください!

参考文献:
http://kuromori.fun/?12_%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AE%E6%B4%BB%E7%94%A8

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

Amazon SageMaker について

次の記事

AWSの資格について