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());
}
}
}