Memcached の概要
Memcached を紹介しましょう。
1. Memcached とは
Memcached は、キーと値のチームの形式でデータにアクセスするオープンソースの高性能分散メモリ オブジェクト キャッシュ システムであり、そのシンプルな設計により、迅速な導入が容易になります。ビッグ データ キャッシュが直面する多くの問題を開発し、解決します。
公式 Web サイトは次のとおりです: http://memcached.org/ 現在、Wikipedia、Flickr、Youtube、WordPress など、多くの有名なインターネット アプリケーションが Memcached を使用しています。
2. Windows プラットフォームで MemCached をダウンロードします。アドレスは:
http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip
対応するソース コードのアドレスは:
http://code.jellycan.com/files/memcached-1.2.6-win32-src.zip
そして、解凍するとmemcached.exeファイルが現れるので、以下のようにインストールするとインストールされます。システムサービスとして
の形式でマシンにインストールします。次に、サービスを選択し、マウスを右クリックしてサービスを開始します。
DOSインターフェースに「telnet 127.0.0.1 11211」と入力し、サービスが正しく開始されているか確認します。正しければ次のように表示されます
上の図に表示されているエラーは、私が文字と文字を入力したものです。これは、入力用に memcached で指定されたプロトコルをインストールする必要があるためです。そうしないと、上記のエラーが表示されます。
3. Memcached プロトコルとデータ アクセス
いわゆるプロトコルは、その操作 (データ アクセス) の文法規則として理解できます。データにアクセスするための一般的なコマンドとパラメーターは次のとおりです:
set: レコードを保存します。
key: レコードのキー値
flags: 10 進整数。レコードを保存するときにクライアント フラグを識別します。レコードが取得されたときに返されます。
exptim: データの有効期限。0 は有効期限がないことを意味し、他の値は有効期限を示すミリ秒数を表します。有効期限が切れると、クライアントはこのレコードを取得できなくなり、memcached 内の期限切れのレコードが取得されます。クリアまたは削除されます。
get: memcached から key に対応する値を取得することを意味します。対応する値がない場合、終了フラグ END を返します。
append:
の key に対応する値に入力された内容を追加することを意味します。 delete: キーに対応する値を削除します。
その他のプロトコルについては、memcached パッケージに含まれるprotocol.txtを参照してください。
set中に指定された文字長が5である場合に注意してください。 、入力コンテンツがこの長さを超えると、エラーが報告されます: CLIENT_ERROR bad data chunk
4. memcached でデータ アクセス操作を実行するコードを作成します
一般的に、オープン ソースのカプセル化された memcached クライアントを使用できます。もちろん、memcached プロトコルに従ってソケット通信プログラムを記述してコードに実装することもできます。
Memcached-Java-Client ダウンロード ページ:
http://github.com/gwhalin/Memcached-Java-Client/downloads からダウンロードを選択します:
java_memcached-release_2.5.1.zip
解凍すると確認できます。 Test ディレクトリに記述されたサンプルは、com.danga.MemCached.test を実行することで確認できます。コードは、
package com.danga.MemCached.test; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; import org.apache.log4j.*; public class TestMemcached { public static void main(String[] args) { // memcached should be running on port 11211 but NOT on 11212 BasicConfigurator.configure(); //缓存服务器地址,多台服务器则以逗号隔开,11211为memcached使用的端口号 String[] servers = { “localhost:11211″ }; //得到一个链接池对象并进行一些初始化工作 SockIOPool pool = SockIOPool.getInstance(); pool.setServers( servers ); pool.setFailover( true ); pool.setInitConn( 10 ); pool.setMinConn( 5 ); pool.setMaxConn( 250 ); //pool.setMaintSleep( 30 ); pool.setNagle( false ); pool.setSocketTO( 3000 ); pool.setAliveCheck( true ); pool.initialize(); MemCachedClient mcc = new MemCachedClient(); // turn off most memcached client logging: //Logger.getLogger( MemCachedClient.class.getName() ).setLevel( com.schooner.MemCached.Logger. ); //以下是数据写入和取出操作例子 for ( int i = 0; i < 10; i++ ) { boolean success = mcc.set( “” + i, “Hello!” ); String result = (String)mcc.get( “” + i ); System.out.println( String.format( “set( %d ): %s”, i, success ) ); System.out.println( String.format( “get( %d ): %s”, i, result ) ); } System.out.println( “\n\t — sleeping –\n” ); try { Thread.sleep( 10000 ); } catch ( Exception ex ) { } for ( int i = 0; i < 10; i++ ) { boolean success = mcc.set( “” + i, “Hello!” ); String result = (String)mcc.get( “” + i ); System.out.println( String.format( “set( %d ): %s”, i, success ) ); System.out.println( String.format( “get( %d ): %s”, i, result ) ); } } }
MemCached Java クライアントのサンプル
package com.danga.MemCached.test; import com.danga.MemCached.*; public class TestMemcached { public static void main(String[] args) { /*初始化SockIOPool,管理memcached的连接池*/ String[] servers = { "192.168.105.217:11211" }; SockIOPool pool = SockIOPool.getInstance(); pool.setServers(servers); pool.setFailover(true); pool.setInitConn(10); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaintSleep(30); pool.setNagle(false); pool.setSocketTO(3000); pool.setAliveCheck(true); pool.initialize(); /*建立MemcachedClient实例*/ MemCachedClient memCachedClient = new MemCachedClient(); for (int i = 0; i < 10; i++) { /*将对象加入到memcached缓存*/ boolean success = memCachedClient.set("" + i, "Hello!"); /*从memcached缓存中按key值取对象*/ String result = (String) memCachedClient.get("" + i); System.out.println(String.format("set( %d ): %s", i, success)); System.out.println(String.format("get( %d ): %s", i, result)); } } }
1 にも掲載されています。この例では c:memcached に解凍します)。
2. コマンドライン状態で、「c:memcachedmemcached.exe -d install」と入力します。この時点で、memcached は Windows サービスとしてインストールされています3. コマンド ラインで「c:memcachedmemcached.exe -d start」と入力して、memcached サービスを開始します。もちろん、Windows サービスで開始することも選択できます
分散キャッシュ ソフトウェア Memcached の Java クライアントの使用法を説明するその他の例については、PHP 中国語 Web サイトの関連記事に注目してください。