読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Web Apps は Memcache プロトコルをサポートしてるけど知られてないっぽい

Azure Web Apps Redis

最近はキャッシュとして Redis Cache を使うことが多いですが、何故か Azure Web Apps では Memcache プロトコルで Redis Cache を使えるようになってます。

ぶっちゃけ Memcache プロトコルで Redis Cache を使うよりも、最初から Redis Cache プロトコルで通信するべきだと思いますが、移行の都合で Redis Cache を使えない場合に使えます。

管理ポータルから以下のアプリケーション設定を追加すると、Memcache Shim がローカルで起動します。

  • REDIS_HOST
    • Redis Cache のホスト名
  • REDIS_KEY
    • Redis Cache へのアクセスキー
  • MEMCACHESHIM_REDIS_ENABLE
    • true / false

実際に設定してみると以下のような感じになります。

f:id:shiba-yan:20150603011554p:plain

アプリケーション設定を追加後に Kudu の Process Explorer を見ると、IIS のワーカープロセス単位で MemCacheAsWJ.exe が起動しています。

f:id:shiba-yan:20150603011936p:plain

Web Apps は権限の関係で新しくポートを開けることが出来ないので、Memcache Shim はかなり特殊です。そして Web Apps は当然ながらマルチテナントで動作しているので、ポート 11211 番は使えません。

その代わり、環境変数 MEMCACHESHIM_PORT で待ち受けポートを渡してくれるので、このポート番号と localhost を指定することで Memcache プロトコルが使えます。

f:id:shiba-yan:20150603012132p:plain

最近のモダンなプログラミング言語なら Redis クライアントが用意されているはずなので、わざわざ Memcache Shim を使う機会はないと思いますが、In-Role Cache が使えない Web Apps で使えるのは助かることがあるのではないかと思いました。

個人的には、どうやって Memcache Shim を動かしているのか気になっています。