Azure Redis CacheにPremium (Preview) が来ました。 -> 2015/11/12にGAしました
これまでのBasic/Standardとの大きな違いは以下のようなものになります。
- キャッシュサイズとパフォーマンス
- 最大クライアント接続数やキャッシュサイズ、ネットワークパフォーマンスなどが高い
- キャッシュサイズ 6GB~53GB、最大でクライアント接続数4万
- Redis Persistence
- Redis Database(RDB)ファイルとしてAzure Storageに定期的にデータベースの内容をダンプできます
- Append Only Fire(AOF)はComing Soon
- Redis Cluster
- クラスターが組めます。標準で最大10台。P4で組むと最大530GBのRedisクラスターになります。
- 10台以上は要相談
- Azure VNET接続
- VNETに参加させることができます
他の機能はStandardを踏襲したものとなります。
価格はこんな感じ(現時点のPreview価格)
キャッシュサイズが同じStandardのプランとだいたい価格が同じですね。GA時にどうなるかはわかりませんが。またSLAは今の時点ではありません。
作成するには
価格レベルでPremiumを選択するとクラスターや永続性、VNETまわりの構成が可能になります。
Redis Cluster
有効にすると1~10までShard数を変えることができます。10以上は要連絡。
※現時点でRedis Clusterを有効にするとRedis Persistenceは使えません(Coming Soon)
Redis Persistence
有効にするとバックアップ間隔を60分/6時間/12時間/24時間から選択できます。
また保存先となるストレージアカウントはPremium Storageが推奨ですがStandardなのも選択できます。
AOFについてはComing Soonですね。
Virtual Network
Redisサーバーが所属する仮想ネットワーク(VNET)とサブネットを指定することができます。またそのサブネット上のIPアドレスも入力します。
あとは診断の有無やリソースグループなどを指定して作成することができます。
※現時点ではShared数や価格帯を作成後に変更できません。
今後のロードマップ
Comin Soonについては結構早くきそうなので要チェックですかね。
- 他の機能(Redis Clusterなど)とRedis Persistenceの共存
- PersistenceでRDBオプションの構成とAOFの有効化
- Redis ClusterのShard数のスケーリング
ドキュメントなど
- Azure Redis Cache: Public preview of premium tier
- Increase performance of Azure Web App with Redis Cache
- AzureConの動画
- Redis Cache documentation
- How to configure Redis clustering for a Premium Azure Redis Cache
- How to configure data persistence for a Premium Azure Redis Cache
- How to configure Virtual Network Support for a Premium Azure Redis Cache
- Create a Redis Cache using a template
- ARMでのデプロイ方法(ただしPremiumについてはComing Soon)
FAQみたいなの
※ドキュメントに記載あるやつ
- Redis Persistenceについて
- 既存のRedis Cacheを永続化できる? → Coming Soon(Preview中はダメかも)
- キャッシュ作成後に頻度を変えられる?→ Coming Soon
- 60分で設定してるのに次回バックアップが60分後じゃないんだけど → 例えばバックアップ完了後から60分です。
- 古いバックアップはどうなりますか? → 最新を除いて古いのは全部削除されます(即時じゃないけど無期限に保存されるものではありません)
- Redis Clusterについて
- クラスタ構成したときにクライアントの変更が必要?
- クラスタリングを有効にするとデータベース0のみが利用可能なのでそれ以外を使うようにしてる場合修正が必要です(以下みたいな例外はくらしい)
Unhandled Exception: StackExchange.Redis.RedisConnectionException: ProtocolFailure on GET ---> StackExchange.Redis.RedisCommandException: Multiple databases are not supported on this server; cannot switch to database: 6
- StackExchange.Redis使っている場合は1.0.481以降を使う必要があります
- アプリがマルチキーを使ったバッチ操作を単一コマンドでする場合、すべてのキーが同じシャードに配置する必要があります
- ASP.NET Session State Providerで使う場合は2.0.0以上を使いましょう
- クラスタリングを有効にするとデータベース0のみが利用可能なのでそれ以外を使うようにしてる場合修正が必要です(以下みたいな例外はくらしい)
- どのキーがクラスター内で分散していますか?
- 各キーはハッシュ化されて16384のスロットのどこかに配置されます
- ハッシュタグ付きキーを使ったりして同じShardに配置させることが可能です
- Keys hash tagsなどドキュメントを参照
- 最大キャッシュサイズは? → 現状P4で53GBx10で530GB
- どうやってクラスターに接続する?
- 通常どおりポート(エンドポイント)とアクセスキーを使ってアクセスするとクラスターに接続します
- どうやってクラスター内のインスタンスに接続する?
- クラスターのエンドポイント(ホスト名)のポート13000~に接続すればできます
- 1台目はポート13000、2台目はポート13001、、です
- SSLを使う場合は15000~です
- ASP.NETのOutputCache Providerにつかえる?
- 特に変更なしで使えます
- クラスタ構成したときにクライアントの変更が必要?
- VNET参加について
- VNETに参加するとインターネット経由(VNET外)からは接続できません
Redis ClusterとVNET
VNETに所属してつないでみました。P1x2 Sharedです。
10.0.0.101:6379> info # Server redis_version:3.0.0 redis_mode:cluster os:Windows arch_bits:64 multiplexing_api:winsock_IOCP run_id:979ceaa45463e4c5dfe09bd2ad3a6f9e6ca16665 hz:10 # Clients connected_clients:1 client_longest_output_list:0 client_biggest_input_buf:0 client_total_writes_outstanding:0 client_total_sent_bytes_outstanding:0 blocked_clients:0 # Memory used_memory:101929400 used_memory_human:97.21M used_memory_rss:1335296 used_memory_rss_human:1.27M used_memory_peak:102096056 used_memory_peak_human:97.37M used_memory_lua:36864 maxmemory:6100000000 maxmemory_human:5.68G maxmemory_policy:volatile-lru mem_allocator:jemalloc-3.6.0 # Stats total_connections_received:5305 total_commands_processed:9264 instantaneous_ops_per_sec:2 bytes_received_per_sec:239 bytes_sent_per_sec:2251 bytes_received_per_sec_human:239B bytes_sent_per_sec_human:2.20K rejected_connections:0 expired_keys:0 evicted_keys:0 keyspace_hits:0 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 total_oom_messages:0 # Replication role:master # CPU used_cpu_sys:0.86 used_cpu_user:0.75 used_cpu_avg_ms_per_sec:0 server_load:0.13 event_wait:7 event_no_wait:8 # Cluster cluster_enabled:1 cluster_myself_name:7-------------------6 # Keyspace 10.0.0.101:6379>
Windows上で動作するRedis 3.0なのは前から同じですね。ちゃんとモードがclusterになっています。またVNETに参加するとVNET外(インターネット経由)からは接続することができません。(接続先がVNETなIPアドレスですね)
設定内容は現状、どこからか変更できない感じなのでPreviewポータル上のプロパティから見ることだけできます。
クラスターではなく1台目などに接続する場合はポートを13000~(SSLの場合は15000~)を指定して接続します。
redis-cli.exe -h 10.0.0.101 -p 13000
2台目に接続する場合は13001につなぎます。
永続性について
指定間隔でRDBファイルがバックアップされます。が、コンソール上でsaveなどしてもそんなコマンドないといわれるので、任意のタイミングでのバックアップはあきらめてAzure側で保存されるのを待つ必要があります。
指定したストレージに何やら謎な命名規則でRDB用のコンテナが作成され、そこにバックアップされます。
使いどころは…まだいろいろ難しいところです。とりあえず保存されてるという感じです。
その他
Previewポータル上でRedisコンソールが使えるようになっています(Preview)
※ポータル機能からの接続になると思うので、VNETに接続したRedisには接続できません。
便利ですね。
まとめ
Coming Soon多いけどだいぶまともになった感