SecondLife向けのWebサービスなど立てても、1日数人しか来ない気もするが、自分の勉強も兼ねて、memcachedで負荷軽減の仕組みとか作ってみる。
memcachedの.Net向けドライバは以下の3つが公式サイトで紹介されていた。
- .NET memcached client library・・・古くからある感じ
- Enyim Memcached・・・かなり新しい5月にリリースされてる
- BeIT Memcached・・・こちらは3月にリリースされてる
とりあえず、一番最近リリースされてて機能も豊富そうな、Enyim Memcachedを使うことに決定。設定は以下のような感じで、web.configのconfigurationタグ直下に書いておけばいいみたい。
<enyim.com>
<memcached>
<servers>
<add address="192.168.1.1" port="11211" />
</servers>
<socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
</memcached>
</enyim.com>
コードは至ってシンプル♪
// Memcached Clientのインスタンス作成
MemcachedClient mc = new MemcachedClient();
// オブジェクト格納(StoreMode.Setで上書き。"value"文字列を5分キャッシュ)
mc.Store(StoreMode.Set, "key", "value", new TimeSpan(0, 5, 0));
// オブジェクト取出(ジェネリック対応メソッドがある!)
string str = mc.Get<string>("key");
あとは、DBからデータを取得するとき、まずキャッシュを見るようにして、データ更新時にはキャッシュを消すようにすればいいだけ。
これで充実したキャッシュライフが送れること請け合いですな( ̄∇ ̄)