都内で働くSEの技術的なひとりごと

都内でサラリーマンやってます。マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。よろしくお願いします♪

分散キャッシュ

今お仕事で興味が湧いてるものがあります。それは、『分散キャッシュ』技術です。何がいいかなーと思いつつ、分散キャッシュでメジャーなソフトである『memcached』を試してみることにしました。

 

とりあえず、以下の環境を構築しました。

memcachedのインストール方法は下記の通りです。

  1. ここからmemcached-win64.zipをダウンロードする。
  2. zipファイルを解凍して、適当な場所にコピーし、DOSプロンプト上で『memcached.exe -d install』を実行する。
  3. 上記のコマンド実行後、サービスとして登録されるので、『コントロール パネル』→『管理ツール』→『サービス』を起動する。
  4. サービス一覧より、『memcached』を右クリックし、『開始』をクリックする。

上記の操作で、『memcached』のインストールからサービス起動までが完了しました。

 

.NETクライアントから接続するのは、今度試してみたいと思います。(ちょっと眠くて力尽きました...)

 

以下、追記(2013.3.19) 

  1. ここからNMemcached.Client 1.2 をダウンロードします。
  2. ダウンロードしたファイルを解凍し、『NMemcached.Client.dll』を適当な場所にコピーします。
  3. Visual Studioでプロジェクトを作成し、参照設定で『NMemcached.Client.dll』を設定します。
  4. usingに『NMemcached.Client;』を追加します。
  5. 下記のコードを記述します。

       //memcachedが稼働しているサーバを指定します。

  var client = new MemcachedClient("192.168.32.131");

       //testというキーでtest dataというデータをキャッシュします。
       var response = client.Set("test", "test data");

  //testというキーでデータを取り出します。
       var obj = client.Get("test");

 

キャッシュサーバを分散させる場合には、MemcachedClientのコンストラクタ引数にstringの配列で渡せばいいみたいですね。有効期限などもSetメソッドの第三引数に時間を設定するとキャッシュの有効期限が指定できます。

キャッシュクライアントの機能として、 

  • TCP and UDP socket connections (UDP is supported only for binary protocol connections)
  • Text and binary Memcached protocol support
  • Dead server detection
  • Asynchronous command support
  • Data compression
  • Automatic object serialization

 

  • TCP と UDP のソケット (UDP バイナリ プロトコル接続のみをサポート) 接続
  • テキストとバイナリの Memcached のプロトコルのサポート
  • サーバーの死活検出
  • 非同期コマンドのサポート
  • データ圧縮
  • オブジェクトの自動シリアル化

他にも色々機能があるみたいです。色々試したくなりますねー。 

次回は、サーバを分散させて実験してみよう。(かな?)