Java で Memcached サービスに接続

Java プログラムを使用して Memcached に接続するには、classpath に Memcached の jar パッケージを追加する必要があります。

当サイトの jar パッケージ ダウンロード URL:。

Google Code の jar パッケージ ダウンロード URL:spymemcached-2.10.3.jar(VPN でのアクセスが必要です)。

以下のプログラムは、Memcached サービスのホストが 127.0.0.1、ポートが 11211 であることを前提としています。

接続例

Java で Memcached に接続

MemcachedJava.java ファイル:

import net.spy.memcached.MemcachedClient; import java.net.*; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルで Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //接続を閉じる mcc.shutdown(); }catch(Exception ex){ System.out.println( ex.getMessage() ); } } }

このプログラムでは、InetSocketAddress を使用して、IP が 127.0.0.1、ポートが 11211 の memcached サービスに接続します。

上記のコードを実行すると、接続が成功した場合に以下の情報が出力されます。

Connection to server successful.

set 操作の例

以下では java.util.concurrent.Future を使用してデータを保存します。

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを保存 Future fo = mcc.set("サンプル", 900, "Free Education"); //保存状態を確認 System.out.println("set status:" + fo.get()); //値を出力 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex){ System.out.println( ex.getMessage() ); } } }

プログラムを実行すると、出力結果は次のようになります。

Connection to server successful.
set status:true
サンプル value in cache - Free Education

add 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを追加 Future fo = mcc.set("サンプル", 900, "Free Education"); //状態を出力 System.out.println("set status:" + fo.get()); //出力 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //追加 fo = mcc.add("サンプル", 900, "memcached"); //状態を出力 System.out.println("add status:" + fo.get()); //新しいキーを追加 fo = mcc.add("サンプル", 900, "All Free Compilers"); //状態を出力 System.out.println("add status:" + fo.get()); //出力 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex){ System.out.println(ex.getMessage()); } } }

replace 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try { //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //最初の key=》value ペアを追加 Future fo = mcc.set("サンプル", 900, "Free Education"); //add メソッド実行後の状態を出力 System.out.println("add status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //新しいキーを追加 fo = mcc.replace("サンプル", 900, "Largest Tutorials' Library"); //set メソッド実行後の状態を出力 System.out.println("replace status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex){ System.out.println( ex.getMessage() ); } } }

append 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを追加 Future fo = mcc.set("サンプル", 900, "Free Education"); //set メソッド実行後の状態を出力 System.out.println("set status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //既存のキーに対してデータ追加操作を実行 fo = mcc.append("サンプル", 900, " for All"); //set メソッド実行後の状態を出力 System.out.println("append status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex) { System.out.println(ex.getMessage()); ] } }

prepend 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを追加 Future fo = mcc.set("サンプル", 900, "Education for All"); //set メソッド実行後の状態を出力 System.out.println("set status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //既存のキーに対してデータ追加操作を実行 fo = mcc.prepend("サンプル", 900, "Free "); //set メソッド実行後の状態を出力 System.out.println("prepend status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex) { System.out.println(ex.getMessage()); } } }

CAS 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.CASValue; import net.spy.memcached.CASResponse; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを追加 Future fo = mcc.set("サンプル", 900, "Free Education"); //set メソッド実行後の状態を出力 System.out.println("set status:" + fo.get()); //get メソッドを使用してデータを取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //gets メソッドを使用して CAS トークンを取得 CASValue casValue = mcc.gets("サンプル"); //CAS トークンの値を出力 System.out.println("CAS token - " + casValue); //cas メソッドを使用してデータを更新してみます CASResponse casresp = mcc.cas("サンプル", casValue.getCas(), 900, "Largest Tutorials-Library"); //CAS レスポンス情報を出力 System.out.println("CAS Response - " + casresp); //値を出力 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex) { System.out.println(ex.getMessage()); } } }

get 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを追加 Future fo = mcc.set("サンプル", 900, "Free Education"); //set メソッド実行後の状態を出力 System.out.println("set status:" + fo.get()); //get メソッドを使用してデータを取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex) { System.out.println(ex.getMessage()); } } }

gets 操作の例、CAS

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.CASValue; import net.spy.memcached.CASResponse; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを追加 Future fo = mcc.set("サンプル", 900, "Free Education"); //set メソッド実行後の状態を出力 System.out.println("set status:" + fo.get()); //キャッシュからキーが サンプル の値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //gets メソッドを使用して CAS トークンを取得 CASValue casValue = mcc.gets("サンプル"); //CAS トークンの値を出力 System.out.println("CAS value in cache - " + casValue); //接続を閉じる mcc.shutdown(); }catch(Exception ex) { System.out.println(ex.getMessage()); } } }

delete 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //データを追加 Future fo = mcc.set("サンプル", 900, "World's largest online tutorials library"); //set メソッド実行後の状態を出力 System.out.println("set status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //既存のキーに対してデータ追加操作を実行 fo = mcc.delete("サンプル"); //delete メソッド実行後の状態を出力 System.out.println("delete status:" + fo.get()); //キーに対応する値を取得 System.out.println("サンプル value in cache - " + mcc.get("サンプル")); //接続を閉じる mcc.shutdown(); }catch(Exception ex) { System.out.println(ex.getMessage()); } } }

Incr/Decr 操作の例

MemcachedJava.java ファイル:

import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ //ローカルの Memcached サービスに接続 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful."); //数値を追加 Future fo = mcc.set("number", 900, "1000"); //set メソッド実行後の状態を出力 System.out.println("set status:" + fo.get()); //キーに対応する値を取得 System.out.println("value in cache - " + mcc.get("number")); //インクリメントして出力 System.out.println("value in cache after increment - " + mcc.incr("number", 111)); //デクリメントして出力 System.out.println("value in cache after decrement - " + mcc.decr("number", 112)); //接続を閉じる mcc.shutdown(); }catch(Exception ex) { System.out.println(ex.getMessage()); } } }
その他の拡張