およそ2年前に、Amazon ElastiCacheがサービスを開始してから、それ以来、着実に機能を追加してきました。この2年で、オートディスカバリー機能、新しいキャッシュノードタイプ、リザーブドキャッシュノードを追加いたしました。さらに複数回にわたる利用料金の値下げや、利用可能なAWSリージョンの拡大、VPCのサポートも追加いたしました。
そして本日、2つめのインメモリキャッシュエンジンのサポートを追加することにより、ElastiCacheは大きく飛躍いたします!
従来からのMemcachedのサポートに加え、Amazon ElastiCacheは人気の高い、Redisキーバリューストアを本日よりサポート開始いたします。
オンプレミス環境やAmazon EC2インスタンス上でRedisをすでに実行している場合も、簡単にElastiCacheにアップグレードし、起動、監視、スケール、維持が容易な、完全に管理されたサービスのベネフィットを得ることができます。
Redisとは?
Memcachedと同様、Redisはキーバリューストアです。つまり、データを保存するためにRedisにキーと値を提供する必要があります。
その後、キーをRedisに渡すと、値、つまりデータを返すようになります。
Redisはアトミックな操作を使った、構造化されたデータの保存する機能を持っています。
このため、Redisはアプリケーション自身のデータ構造に柔軟に対応することができますし、アプリケーションのキャッシュ管理レイヤーをシンプルにすることもできます。Redisは次のデータ構造をサポートしています。
- 文字列型: 最大512MBまで扱えます。
- リスト型: 文字列型のリストで、挿入順にソートされます。
- セット型: 文字列型の順不同の集合です。
- ハッシュ型: 順番がない文字列型のフィールドと値のマップです。
- ソート済みセット型: 非繰り返し文字列型の集合で、メンバがスコアに関連したハッシュ値を持つ所がセット型との違いです。
Redisは各タイプのアイテムに対するアトミックでハイレベルな操作もサポートします。 例えば、リストの最初、または最後に新しい要素を追加することができたり、文字列をインクリメンタルまたはデクリメンタルなアトミックカウンターとして使ったり、セットにメンバーを追加したり、2つのセットをくっつけて新しいセットを作ったり、ハッシュを操作したりといったことが可能です。
全てのキーはTime to Live (TTL)を持つことができ、これに関連づけられたキーと値はそれを過ぎると自動で削除されます。 この機能により、必要以上に大量にキャッシュノード内のメモリを消費することなく、アプリケーションを効率的でレスポンスが早い状態に保つために、十分なデータを格納するよう、キャッシュモデルを微調整することができます。
Redisはプログラミング言語、Luaをサポートしています。 クライアントアプリケーションからLuaスクリプトを呼びだすことができますので、このスクリプトを使って、他のRedis操作を呼びだしたり、保存されているキーおよびデータにアクセスしたりすることができます。
Redis入門
AWS CloudFormationは、AWSリソースのコレクションを順序正しく、予測可能な方法で作成、更新、管理する簡単な方法を提供します。今回新しく用意したCloudFormationのテンプレートを使って、数分以内にRedisクラスタを起動することができます。このテンプレートはRedisクラスターとクラスターに接続するためのPHPアプリケーションを作成します。
をクリックすることで、すぐにスタックを起動することができます。(通常のAWSの利用料金が適用されます。) また、サンプルの ElastiCache Redis テンプレートをダウンロードして、後で使うこともできます。
AWS Management ConsoleからRedisクラスターを起動することも、もちろん可能です。 ElastiCacheタブに移動して下記のボタンをクリックするところからスタートします。

その後は、Launch Cache Clusterウィザードに従います。最初のページでは、Engineに "redis" を選択してください。

すでにRedisをオンプレミス環境でインストールしてご利用の場合、キャッシュのスナップショット(RDB file)を作成し、それをAmazon S3のバケットにアップロードし、Redisを実行しているElastiCacheノードにプリロードすることができます。近い将来、自身のキャッシュノードの同様のスナップショットを作成する機能を提供する予定です。
キャッシュノードタイプは以下の9つの中から好きなものを選択いただけます。

ウィザードの2ページ目では、Cache Security Group と Cache Parameter Groupを選択することができます。 また、適切なメンテナンス・ウィンドウを選択することもできます。Redis用のデフォルトのParameter Groupを使用すると30以上のパラメータを制御することができます。

Redis Cacheクラスタが起動し実行中になった後、replication groupを作成し、そこにノードを追加することで、簡単にクラスターの読み込み性能を向上させることができます。


実装上の注意
ここでは、Amazon ElastiCache for Redisの実装を計画するにあたって頭に入れておくべきいくつかのことを紹介します。
- 現在サポートしているRedisのバージョンは 2.6.13 です。
-
上記のとおり、オンプレミスにインストールされたRedisからElastiCacheノードにプリロードするために、RDBファイルを使うことができます。
RDBファイルはサポートされているバージョンと互換性があるRedisのバージョンから作成されている必要があります。
-
ElastiCache for Redisのreplication groupはRedisのプライマリーとリードレプリカをカプセル化します。replication groupはひとつのプライマリークラスターとゼロもしくは複数のリードレプリカクラスターを持ちます。replication group内の(従ってクラスタ内の)全てのノードは、同じノードタイプで、同じParameter GroupおよびSecurity Groupの設定を使用します。
-
可用性を高めるために、別のアベイラビリティゾーンにリードレプリカを作成することができます。
プライマリーノードに障害が発生した場合、Amazon ElastiCacheはそれを置き変え、リードレプリカのコンテンツをプリロードします。
そして、ノードの既存のDNS名を新しいノードを指すようリダイレクトします。プライマリーノードあたり最大5つのリードレプリカを作成することができます。また、いつでもリードレプリカをプライマリーに昇格させることもできます。
-
永続化のために、ElastiCacheノードのローカルディスク上で、AOF (Append Only File)ログを有効にすることができます。
ノードが再起動した際にこのログファイルが存在した場合、ElastiCacheはそれをプリロードします。永続化についてさらに細かく制御する必要がある場合、EC2インスタンス上で実行しているRedisノードをElastiCacheのプライマリーに接続し、EC2インスタンス上でRedis RDBスナップショットやAOFログを有効にすることもできます。
Redisのについての学習
Redisのプログラミングおよびストレージモデルに慣れていない場合、インタラクティブなチュートリアルからスタートするといいかもしれません。基本を身につけた後は、お好みの言語および環境のRedisクライアントをダウンロードし、アプリケーションに高度なキャッシュ機能を追加しましょう。
9月26日にRedisのウェビナー(英語)を開催いたします。席に限りがありますので、興味がある方は今すぐサインアップしてください。
今すぐはじめましょう!
本日より、Redisクラスターは全てのパブリックなAWSリージョンで起動することができるようになっています。
Amazon ElastiCacheに慣れていない場合、AWS無料利用枠の範囲内で、Amazn ElastiCache for Redisをお試しいただけます。AWSアカウントを取得してから1年間、microノード上のElastiCache for Redisを1ヶ月あたり750時間ご利用いただけます。