最近はキャッシュとして 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 を動かしているのか気になっています。