しばやん雑記

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

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

最近はキャッシュとして 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

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

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

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

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

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

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