Amazon Web Services ブログ

Amazon ElastiCache for Redisアップデート – Sharded Clusterの追加やエンジンバージョンを更新 –

多くのAWSのお客様に高速で、インメモリデータストアとして Amazon ElastiCacheをご利用頂いています。

2013年にAmazon ElastiCache for Redisをリリースし、スナップショットのS3へのエクスポート機能、エンジンバージョンの更新、スケールアップ機能タグ、Multi-AZで自動フェイルオーバー機能を数年で追加してきました。

本日、新機能をElastiCache for Redisへ追加しました。詳細は以下の通りです。

  • Sharded Clusterサポート – 3.5 TiB以上をインメモリデータとして扱う事が出来るsharded clusterを作成可能になりました
  • コンソールの改善 – 以前より簡単にクラスタの作成やメンテナンスが行えるようになりました
  • エンジンアップデート – Redis 3.2の機能をご利用頂けるようになりました
  • Geospatial Data – 地理空間データの処理を行え、利用可能になりました

更に詳細を見ていきましょう!

 

Sharded Clusterサポート / 新コンソール

今まではElastiCache for Redisは1つのプライマリノードと5つまでのread replicaを含んだクラスタに対応していました。この構成では、メモリサイズがクラスタあたり237 GiBに制限されていました。

1クラスタで15シャードまで作成出来るようになったことで、クラスタ全体のメモリ容量を拡大することが可能になり、最大3.5 TiBまでのデータをインメモリデータとして格納出来ます。それぞれのシャードは5つまでread replicaを作成可能で、1秒あたり2,000万読み込み、450万書き込みの性能を提供します。

シャードモデルは、read replicaと合わせて利用することでクラスタ全体の可用性とパフォーマンスを向上します。データは複数のノードに分散され、read replicaは高速で自動的なフェイルオーバーをプライマリノードに障害が起こった際に提供します。

シャードモデルの利点を活かすために、cluster対応のRedisクライアントを使う必要があります。クライアントは、16,384個のスロットをシャード毎に均等に分散されたハッシュテーブルとして扱い、保存するデータを各シャードにマップします。

ElastiCache for Redisはクラスタ全体を1つのバックアップとリストア用途のユニットとして扱います。そのため、各シャード毎のバックアップを管理したり考えたりする必要がありません。

コンソールの機能が改善され、スケールアウトクラスタを簡単に作成可能になりました。(Redisエンジンを選択した後にCluster Mode enabled (Scale Out)にチェックを入れている点を注目して下さい)

ec_redis_create_so_cluster

新しい便利なメニューで適切なノードタイプを選択を手助けしてくれます

ec_redis_pick_your_node_not_your_nose

sharded clusterは、AWS Command Line Interface (CLI)AWS Tools for Windows PowerShellElastiCache APIAWS CloudFormationテンプレートからも作成可能です。

 

エンジンアップデート

Amazon ElastiCache for RedisはRedis3.2に対応しました。このバージョンは3つの興味深い機能を持っています。

  • Enforced Write Consistency – 新しいWAITコマンドはそれ以前の全ての書き込みコマンドに対して、プライマリノードと設定された数のread replicaから確認応答が返ってくるまで呼び出し元をブロックします。この変更はRedisを強い一貫性を持ったデータストアにするものではありません。しかし、新しく昇格したread replicaが直前にプライマリノードに書き込まれた出たデータを保持している可能性を向上します
  • SPOP with COUNTSPOPコマンドはsetからランダムにエレメントを削除してそれを返却します。1つ以上のエレメントを1回でリクエスト出来るようになりました
  • Bitfields – BitfieldsはRedis stringとして保存されていた小さい整数のコレクションをビットマップとして保存することでメモリ効率を良くする方法です。BITFIELDコマンドを使うことで、 (GET) や(SET, increment, decrement) をbyteアライメントや文字境界を気にすること無く扱うことが出来るようになります

私達のRedisの実装は、サーバプロセスをフォークする事なくスナップショットを取得する機能を持っています。過負荷状態では標準のフォークを利用したスナップショットはスワップによるパフォーマンスの低下を引き起こす可能性があります。私達の実装ではメモリ利用率が50%を越えていたとしても動作をし、問題を解決します。この機能は少し低速なため、必要になった場合にこの機能を利用します。

その他にも私達の実装では新しいread replicaがプライマリノードと同期する時のパフォーマンスを向上しています。これと似た性能向上を新しく昇格したプライマリノードと既存のread replicaが同期する際にも実装しています。

今までお伝えした通り、私達のエンジンはオープンソースバージョンのものと互換性があり、皆様のアプリケーションに変更は必要ありません。

 

Geospatial Data

地理空間データ(緯度・経度)を保存したりクエリ出来るようになりました。以下が関連するコマンドです。

  • GEOADD – 地理空間データを保存
  • GEODIST – 2地点間の距離を取得
  • GEOHASHGeohash (geocoding)を取得
  • GEOPOS – keyでしてされた地点のアイテムを取得
  • GEORADIUS – 指定された地点の半径内のアイテムを取得
  • GEORADIUSBYMEMBER – 他のアイテムの半径内に収まるアイテムを取得

 

今日からご利用頂けます

Sharded clusterを含む今回ご紹介した全ての機能は全てのAWSリージョン今日からご利用頂けます。

Jeff; (翻訳は星野が担当しました。原文はこちら)