Javascriptでmemcachedにソケット通信する
MOONGIFTで紹介されていたJNEXTを使うとブラウザからソケット通信をする事ができます。これを使ってmemcachedにソケット通信するモジュールを作ってみました。
使い方
クライアント側
JNEXTをインストールします。
インストールが完了したら、auth.txtを編集してJNEXTが実行できるURLとライブラリを追記します。
- MSIE → C:\Program Files\Optimistec\JNEXT\ActiveX\jnext\auth.txt
- Firefox → C:\Program Files\Mozilla Firefox\plugins\jnext\auth.txt
file:// * http://127.0.0.1 Sockets http://example.com Sockets
以下のライブラリをBODYタグに読み込みます。
<body> <script type="text/javascript" src="jnext/jnext.js"></script> <script type="text/javascript" src="jnext/sockets.js"></script> <script type="text/javascript" src="cache_memcached.js"></script>
jnex.js,socket.jsはJNEXのライブラリでcache_memcached.jsがmemchashedに通信するモジュールです。
memcachedに接続
IPアドレスとポート番号を渡してnewします。これで接続が開始されます。
var mm = new CacheMemcached({ server: ['192.168.0.10',11211] });
get
keyと関数を渡して値を取得します。サーバから値が返ってくると関数が実行され引数に値が入ります。
mm.get('hoge',function(r){alert('get-response-value>' + r);});
remove
指定したkeyの値を削除します。
mm.remove('hoge');
flush_all
すべてのデータを削除します。
mm.flush_all();
memcachedのプロトコル
protocol.txtにプロトコルが書かれています。telnetで動作を確認する事ができます。
$ telnet 192.168.0.10 11211
set foo 0 0 7 aabbccd STORED
get foo VALUE foo 0 7 aabbccd END
このやり取りをソケット通信で行っている訳です(割とシンプル?)。
モジュール名に"Cache"とか付けましたが、全然キャッシュじゃないですね(笑)。Cache::MemcachedみたいなAPIにしたかったんで、そう命名しました。
「何に使えるの?」と言われるとあまり思いつかないです、memcachedをクリア(flush_all)したいとかでしょうかね?考え中。