Memcached-quick-guide

提供:Dev Guides
移動先:案内検索

Memcached-概要

Memcachedは、データベースの負荷を減らすことで動的なWebアプリケーションを高速化することを目的とした、オープンソースの高性能な分散メモリキャッシュシステムです。 これは、データベース呼び出し、API呼び出し、またはページレンダリングの結果としてメモリに格納される文字列、オブジェクトなどのキーと値の辞書です。

Memcachedは、2003年にBrad FitzpatrickによってLiveJournal用に開発されました。 ただし、現在はNetlog、Facebook、Flickr、Wikipedia、Twitter、YouTubeなどで使用されています。

Memcachedの主要な機能は次のとおりです-

  • オープンソースです。
  • Memcachedサーバーは大きなハッシュテーブルです。
  • データベースの負荷を大幅に削減します
  • データベースの負荷が高いWebサイトに最適です。
  • Berkeley Software Distribution(BSD)ライセンスの下で配布されています。
  • TCPまたはUDPを介したクライアント/サーバーアプリケーションです。

Memcachedではありません-

  • 永続的なデータストア
  • データベース
  • アプリケーション固有
  • ラージオブジェクトキャッシュ
  • 耐障害性または高可用性

Memcached-環境

UbuntuにMemcachedをインストールする

UbuntuにMemcachedをインストールするには、ターミナルに移動し、次のコマンドを入力します-

$sudo apt-get update
$sudo apt-get install memcached

Memcachedインストールの確認

Memcachedがインストールされているかどうかを確認するには、以下のコマンドを実行する必要があります。 このコマンドは、Memcachedがデフォルトポート 11211 で実行されていることを示しています。

$ps aux | grep memcached

別のポートでMemcachedサーバーを実行するには、以下のコマンドを実行します。 このコマンドは、TCPポート11111でサーバーを起動し、デーモンプロセスとしてUDPポート11111でリッスンします。

$memcached -p 11111 -U 11111 -u user -d

1回のインストールでMemcachedサーバーの複数のインスタンスを実行できます。

Memcached Java環境のセットアップ

JavaプログラムでMemcachedを使用するには、 https://code.google.com/archive/p/spymemcached/downloads [spymemcached-2.10.3.jar] をダウンロードし、このjarをクラスパスにセットアップする必要があります。

Memcached-接続

Memcachedサーバーに接続するには、ホスト名とポート名でtelnetコマンドを使用する必要があります。

構文

Memcached telnetコマンドの基本的な構文は次のとおりです-

$telnet HOST PORT

ここで、 HOSTPORT はそれぞれMemcachedサーバーが実行されているマシンIPとポート番号です。

次の例は、Memcachedサーバーに接続し、単純なsetおよびgetコマンドを実行する方法を示しています。 Memcachedサーバーがホスト127.0.0.1およびポート11211で実行されていると仮定します。

$telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
//now store some data and get it from memcached server
set finddevguides 0 900 9
memcached
STORED
get finddevguides
VALUE finddevguides 0 9
memcached
END

Javaアプリケーションからの接続

JavaプログラムからMemcachedサーバーを接続するには、前の章で示したように、Memcached jarをクラスパスに追加する必要があります。 Memcachedサーバーがホスト127.0.0.1およびポート11211で実行されていると仮定します。 −

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server sucessfully");

     //not set data into memcached server
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").done);

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successfully
set status:true
Get from Cache:memcached.

端末には情報メッセージもほとんど表示されない場合がありますが、無視してかまいません。

Memcached-データの設定

Memcached set コマンドは、新しい値を新しいキーまたは既存のキーに設定するために使用されます。

構文

Memcached set コマンドの基本的な構文は以下のとおりです-

set key flags exptime bytes [noreply]
value

構文のキーワードは以下のとおりです-

  • key -データの保存とMemcachedからの取得に使用されるキーの名前です。
  • フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
  • exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
  • バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
  • * noreply(オプション)*-応答を送信しないようにサーバーに通知するパラメーターです。
  • -保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。

出力

コマンドの出力は次のようになります-

STORED
  • STORED は成功を示します。
  • ERROR は、データの保存中に誤った構文またはエラーを示します。

次の例では、finddevguidesをキーとして使用し、有効期間を900秒に設定してMemcachedの値を設定します。

set finddevguides 0 900 9
memcached
STORED
get finddevguides
VALUE finddevguides 0 9
Memcached
END

Javaアプリケーションを使用してデータを設定する

Memcachedサーバーでキーを設定するには、Memcached set メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server sucessfully");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").done);

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successfully
set status:true
Get from Cache:memcached

Memcached-データの追加

Memcached add コマンドを使用して、値を新しいキーに設定します。 キーがすでに存在する場合、出力NOT_STOREDを提供します。

構文

Memcached add コマンドの基本的な構文は以下のとおりです-

add key flags exptime bytes [noreply]
value

構文のキーワードは以下のとおりです-

  • key -データの保存とMemcachedからの取得に使用されるキーの名前です。
  • flags -サーバーが提供されたデータとともに保存する32ビットの符号なし整数 ユーザーが入力し、アイテムが取得されるとデータとともに戻ります。
  • exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeがもっと Memcachedは30日以上経過すると、有効期限のUNIXタイムスタンプとして使用します。
  • バイト-それは格納する必要があるデータブロック内のバイト数です。 これは Memcachedに保存する必要があるデータの長さ。
  • * noreply(オプション)*-応答を送信しないようにサーバーに通知するパラメーターです。
  • -保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。

出力

コマンドの出力は次のようになります-

STORED
  • STORED は成功を示します。
  • NOT_STORED は、データがMemcachedに保存されないことを示します。

次の例では、「キー」をキーとして使用し、有効期限を900秒にして値Memcachedを追加します。

add key 0 900 9
memcached
STORED
get key
VALUE key 0 9
Memcached
END

故障出力

add key 0 900 5
redis
NOT_STORED

Javaアプリケーションを使用してデータを追加する

Memcachedサーバーにデータを追加するには、Memcached add メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server successful");
      System.out.println("add status:"+mcc.add("finddevguides", 900, "redis").done);
      System.out.println("add status:"+mcc.add("tp", 900, "redis").done);

     //Get value from cache
      System.out.println("Get from Cache tp:"+mcc.get("tp"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successful
add status:false
add status:true
Get from Cache tp:redis

Memcached-データの置換

Memcached replace コマンドは、既存のキーの値を置き換えるために使用されます。 キーが存在しない場合、NOT_STOREDを出力します。

構文

Memcached replace コマンドの基本的な構文は以下のとおりです-

replace key flags exptime bytes [noreply]
value

構文のキーワードは以下のとおりです-

  • key -データの保存とMemcachedからの取得に使用されるキーの名前です。
  • フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
  • exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
  • バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
  • * noreply(オプション)*-サーバーに何も送信しないように通知するパラメーターです 応答。
  • -保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。

出力

コマンドの出力は次のようになります-

STORED
  • STORED は成功を示します。
  • NOT_STORED は、データがMemcachedに保存されないことを示します。

次の例では、「キー」をキーとして使用し、memcachedを有効期限900秒で保存します。 この後、同じキーが値「redis」に置き換えられます。

add key 0 900 9
memcached
STORED
get key
VALUE key 0 9
memcached
END
replace key 0 900 5
redis
get key
VALUE key 0 5
redis
END

Javaアプリケーションを使用したデータの置換

Memcachedサーバーのデータを置き換えるには、Memcached replace メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server sucessfully");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").done);

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));

     //now replace the existing data
      System.out.println("Replace cache:"+mcc.replace("finddevguides", 900, "redis").done);

     //get the updated data
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successfully
set status:true
Get from Cache:memcached
Replace cache:true
Get from Cache:redis

Memcached-データの追加

Memcached append コマンドは、既存のキーにデータを追加するために使用されます。 データはキーの既存のデータの後に保存されます。

構文

Memcached append コマンドの基本的な構文は次のとおりです-

append key flags exptime bytes [noreply]
value

構文のキーワードは次のとおりです-

  • key -データを保存および取得するキーの名前です Memcached。
  • フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
  • exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
  • バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
  • * noreply(オプション)*-サーバーに応答を送信しないことを通知するパラメーターです。
  • -保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。

出力

コマンドの出力は次のようになります-

STORED
  • STORED は成功を示します。
  • NOT_STORED は、キーがMemcachedサーバーに存在しないことを示します。
  • CLIENT_ERROR はエラーを示します。

次の例では、存在しないキーにデータを追加しようとします。 したがって、Memcachedは NOT_STORED を返します。 この後、1つのキーを設定し、それにデータを追加します。

append tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
append tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
memcachedredis
END

Javaアプリケーションを使用したデータの追加

Memcachedサーバーにデータを追加するには、Memcached append メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server successful");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").isDone());

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));

     //now append some data into existing key
      System.out.println("Append to cache:"+mcc.append("finddevguides", "redis").isDone());

     //get the updated key
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successful
set status:true
Get from Cache:memcached
Append to cache:true
Get from Cache:memcachedredis

Memcached-データの前に追加

Memcached prepend コマンドは、既存のキーにデータを追加するために使用されます。 データは、キーの既存のデータの前に保存されます。

構文

Memcached prepend コマンドの基本的な構文は次のとおりです-

prepend key flags exptime bytes [noreply]
value

構文のキーワードは次のとおりです-

  • key -データを保存および取得するキーの名前です Memcached。
  • フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
  • exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
  • バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
  • * noreply(オプション)*-サーバーに応答を送信しないことを通知するパラメーターです。
  • -保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。

出力

コマンドの出力は次のようになります-

STORED
  • STORED は成功を示します。
  • NOT_STORED は、キーがMemcachedサーバーに存在しないことを示します。
  • CLIENT_ERROR はエラーを示します。

次の例では、存在しないキーにデータを追加します。 したがって、Memcachedは NOT_STORED を返します。 この後、1つのキーを設定し、それにデータを追加します。

prepend tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
prepend tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
redismemcached
END

Javaアプリケーションを使用してデータを付加する

Memcachedサーバーにデータを追加するには、Memcached prepend メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {
     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server successful");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").isDone());

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));

     //now append some data into existing key
      System.out.println("Prepend to cache:"+mcc.prepend("finddevguides", "redis").isDone());

     //get the updated key
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successful
set status:true
Get from Cache:memcached
Prepend to cache:true
Get from Cache:redismemcached

Memcached-CASコマンド

CASは、Check-And-SetまたはCompare-And-Swapの略です。 Memcached CAS コマンドは、最後のフェッチ以降に更新されていない場合にデータを設定するために使用されます。 キーがMemcachedに存在しない場合、 NOT_FOUND を返します。

構文

Memcached CAS コマンドの基本的な構文は次のとおりです-

set key flags exptime bytes unique_cas_key [noreply]
value

構文のキーワードは次のとおりです-

  • key -データの保存とMemcachedからの取得に使用されるキーの名前です。
  • フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
  • exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
  • バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
  • unique_cas_key -getsコマンドから取得する一意のキーです。
  • * noreply(オプション)*-サーバーに何も送信しないように通知するパラメーターです 応答。
  • -保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。

出力

コマンドの出力は次のようになります-

STORED
  • STORED は成功を示します。
  • ERROR は、データの保存中のエラーまたは間違った構文を示します。
  • EXISTS は、最後のフェッチ以降に誰かがCASデータを変更したことを示します。
  • NOT_FOUND は、キーがMemcachedサーバーに存在しないことを示します。

MemcachedでCASコマンドを実行するには、Memcached getsコマンドからCASトークンを取得する必要があります。

cas tp 0 900 9
ERROR
cas tp 0 900 9 2
memcached
set tp 0 900 9
memcached
STORED
gets tp
VALUE tp 0 9 1
memcached
END
cas tp 0 900 5 2
redis
EXISTS
cas tp 0 900 5 1
redis
STORED
get tp
VALUE tp 0 5
redis
END

Javaアプリケーションを使用したCAS

MemcachedサーバーからCASデータを取得するには、Memcached gets メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

    //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server successful");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").isDone());

     //Get cas token from cache
      long castToken = mcc.gets("finddevguides").cas;
      System.out.println("Cas token:"+castToken);

     //now set new data in memcached server
      System.out.println("Now set new data:"+mcc.cas("finddevguides",
      castToken, 900, "redis"));
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successful
set status:true
Cas token:3
Now set new data:OK
Get from Cache:redis

Memcached-データの取得

Memcached get コマンドを使用して、キーに保存されている値を取得します。 キーがMemcachedに存在しない場合、何も返しません。

構文

Memcached get コマンドの基本的な構文は以下のとおりです-

get key

次の例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。

set finddevguides 0 900 9
memcached
STORED
get finddevguides
VALUE finddevguides 0 9
memcached
END

Javaアプリケーションを使用してデータを取得する

Memcachedサーバーからデータを取得するには、Memcached get メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {
     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server sucessfully");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").done);

    //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successfully
set status:true
Get from Cache:memcached

Memcached-CASデータを取得する

Memcached gets コマンドを使用して、CASトークンで値を取得します。 キーがMemcachedに存在しない場合、何も返しません。

構文

Memcached gets コマンドの基本的な構文は以下のとおりです-

get key

set finddevguides 0 900 9
memcached
STORED
gets finddevguides
VALUE finddevguides 0 9 1
memcached
END

この例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。

Javaアプリケーションを使用してCASデータを取得する

MemcachedサーバーからCASデータを取得するには、Memcached gets メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server sucessfully");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").done);

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.gets("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successfully
set status:true
Get from Cache:{CasValue 2/memcached}

Memcached-キーを削除

Memcached delete コマンドは、Memcachedサーバーから既存のキーを削除するために使用されます。

構文

Memcached delete コマンドの基本的な構文は以下のとおりです-

delete key [noreply]

出力

CASコマンドは、次の結果のいずれかを生成することがあります-

  • DELETED は正常な削除を示します。
  • ERROR は、データの削除中のエラーまたは間違った構文を示します。
  • NOT_FOUND は、キーがMemcachedサーバーに存在しないことを示します。

この例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。 この後、保存されたキーを削除します。

set finddevguides 0 900 9
memcached
STORED
get finddevguides
VALUE finddevguides 0 9
memcached
END
delete finddevguides
DELETED
get finddevguides
END
delete finddevguides
NOT_FOUND

Javaアプリケーションを使用したデータの削除

Memcachedサーバーからデータを削除するには、Memcached delete メソッドを使用する必要があります。

import java.net.InetSocketAddress;
import java.util.concurrent.Future;

import net.spy.memcached.MemcachedClient;

public class MemcachedJava {
   public static void main(String[] args) {

      try{

        //Connecting to Memcached server on localhost
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         System.out.println("Connection to server sucessful.");

        //add data to memcached server
         Future fo = mcc.set("finddevguides", 900, "World's largest online tutorials library");

        //print status of set method
         System.out.println("set status:" + fo.get());

        //retrieve and check the value from cache
         System.out.println("finddevguides value in cache - " + mcc.get("finddevguides"));

        //try to add data with existing key
         Future fo = mcc.delete("finddevguides");

        //print status of delete method
         System.out.println("delete status:" + fo.get());

        //retrieve and check the value from cache
         System.out.println("finddevguides value in cache - " + mcc.get("codingground"));

        //Shutdowns the memcached client
         mcc.shutdown();

      }catch(Exception ex)
         System.out.println(ex.getMessage());
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successful
set status:true
finddevguides value in cache - World's largest online tutorials library
delete status:true
finddevguides value in cache - null

Memcached-データを削除する

Memcached delete コマンドは、Memcachedサーバーから既存のキーを削除するために使用されます。

構文

Memcached delete コマンドの基本的な構文は以下のとおりです-

delete key

キーが正常に削除されると、DELETEDが返されます。 キーが見つからない場合はNOT_FOUNDを返し、見つからない場合はERRORを返します。

この例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。 この後、保存されたキーを削除します。

set finddevguides 0 900 9
memcached
STORED
get finddevguides
VALUE finddevguides 0 9
memcached
END
delete finddevguides
DELETED
get finddevguides
END
delete finddevguides
NOT_FOUND

Javaアプリケーションを使用したデータの削除

Memcachedサーバーからデータを削除するには、Memcached delete メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server successful");
      System.out.println("set status:"+mcc.set("finddevguides", 900, "memcached").done);

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));

     //delete value from cache
      System.out.println("Delete from Cache:"+mcc.delete("finddevguides").isDone());

     //check whether value exists or not
      System.out.println("Get from Cache:"+mcc.get("finddevguides"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successful
set status:true
Get from Cache:memcached
Delete from Cache:true
Get from Cache:null

Memcached-増分デクリメントデータ

Memcached incr および decr コマンドは、既存のキーの数値をインクリメントまたはデクリメントするために使用されます。 キーが見つからない場合、 NOT_FOUND を返します。 キーが数値でない場合、* CLIENT_ERRORは非数値をインクリメントまたはデクリメントできません*を返します。 それ以外の場合は、 ERROR が返されます。

構文-incr

Memcached incr コマンドの基本的な構文は以下のとおりです-

incr key increment_value

この例では、訪問者をキーとして使用し、最初に10を設定し、その後訪問者を5増やします。

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
incr visitors 5
15
get visitors
VALUE visitors 0 2
15
END

構文-decr

Memcached decr コマンドの基本的な構文は次のとおりです。

decr key decrement_value

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
decr visitors 5
5
get visitors
VALUE visitors 0 1
5
END

Javaアプリケーションを使用したIncr/Decr

Memcachedサーバーのデータを増減するには、それぞれMemcached incrまたはdecr メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server sucessfully");
      System.out.println("set status:"+mcc.set("count", 900, "5").isDone());

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("count"));

     //now increase the stored value
      System.out.println("Increment value:"+mcc.incr("count", 2));

     //now decrease the stored value
      System.out.println("Decrement value:"+mcc.decr("count", 1));

     //now get the final stored value
      System.out.println("Get from Cache:"+mcc.get("count"));
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successfully
set status:true
Get from Cache:5
Increment value:7
Decrement value:6
Get from Cache:6

Memcached-統計

Memcached stats コマンドは、PID、バージョン、接続などのサーバー統計を返すために使用されます。

構文

Memcached stats コマンドの基本的な構文は以下のとおりです-

stats

stats
STAT pid 1162
STAT uptime 5022
STAT time 1415208270
STAT version 1.4.14
STAT libevent 2.0.19-stable
STAT pointer_size 64
STAT rusage_user 0.096006
STAT rusage_system 0.152009
STAT curr_connections 5
STAT total_connections 6

STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 6
STAT cmd_set 4
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 4
STAT get_misses 2
STAT delete_misses 1
STAT delete_hits 1

STAT incr_misses 2
STAT incr_hits 1
STAT decr_misses 0
STAT decr_hits 1
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0

STAT auth_errors 0
STAT bytes_read 262
STAT bytes_written 313
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16

STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 1
STAT evicted_unfetched 0
STAT bytes 142
STAT curr_items 2
STAT total_items 6
STAT evictions 0
STAT reclaimed 1
END

Javaアプリケーションを使用した統計

Memcachedサーバーから統計を取得するには、Memcached stats メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

     //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server successful");
      System.out.println("Stats:"+mcc.stats);
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successful
Stats:[/127.0.0.1:11211:[delete_hits:0, bytes:71, total_items:4,
rusage_system:0.220013, touch_misses:0, cmd_touch:0, listen_disabled_num:0,
auth_errors:0, evictions:0, version:1.4.14, pointer_size:64, time:1417279366,
incr_hits:1, threads:4, expired_unfetched:0, limit_maxbytes:67108864,
hash_is_expanding:0, bytes_read:170, curr_connections:8, get_misses:1,
reclaimed:0, bytes_written:225, hash_power_level:16, connection_structures:9,
cas_hits:0, delete_misses:0, total_connections:11, rusage_user:0.356022,
cmd_flush:0, libevent:2.0.19-stable, uptime:12015, reserved_fds:20,
touch_hits:0, cas_badval:0, pid:1138, get_hits:2, curr_items:1, cas_misses:0,
accepting_conns:1, evicted_unfetched:0, cmd_get:3, cmd_set:2, auth_cmds:0,
incr_misses:1, hash_bytes:524288, decr_misses:1, decr_hits:1, conn_yields:0]]

Memcached-統計アイテム

Memcached stats items コマンドは、カウント、年齢、立ち退きなどのアイテム統計を取得するために使用されます。 スラブIDで整理されています。

構文

Memcached stats items コマンドの基本的な構文は次のとおりです-

stats items

stats items
STAT items:1:number 1
STAT items:1:age 7
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END

Memcached-統計スラブ

Memcached stats slabs コマンドは、サイズ、メモリ使用量、コマンド、カウントなどのスラブ統計を表示します。 スラブIDで整理されています。

構文

Memcached stats slabs コマンドの基本的な構文は以下のとおりです-

stats slabs

stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 1
STAT 1:free_chunks 10921
STAT 1:free_chunks_end 0
STAT 1:mem_requested 71
STAT 1:get_hits 0
STAT 1:cmd_set 1
STAT 1:delete_hits 0
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END

Memcached-統計サイズ

Memcached stats Sizes コマンドは、キャッシュ内の各サイズのアイテムのサイズと数に関する情報を提供します。 情報は2つの列に返されます。 最初の列はアイテムのサイズ(最も近い32バイト境界まで切り上げ)、2番目の列はキャッシュ内のそのサイズのアイテム数のカウントです。

構文

Memcached * statsサイズ*コマンドの基本的な構文は以下のとおりです-

stats sizes

stats sizes
STAT 96 1
END

アイテムサイズの統計は、保存しているオブジェクトのサイズを判断する場合にのみ役立ちます。 実際のメモリ割り当ては、チャンクサイズとページサイズの観点からのみ関連するため、この情報は、注意深いデバッグまたは診断セッション中にのみ役立ちます。

Memcached-データを消去

Memcached flush_all コマンドを使用して、Memcachedサーバーからすべてのデータ(キーと値のペア)を削除します。 Memcachedデータがクリアされるまでの時間を設定する time というオプションのパラメーターを受け入れます。

構文

Memcached flush_all コマンドの基本的な構文は以下のとおりです-

flush_all [time] [noreply]

上記のコマンドは常にOKを返します。

次の例では、一部のデータをMemcachedサーバーに保存してから、すべてのデータを消去します。

set finddevguides 0 900 9
memcached
STORED
get finddevguides
VALUE finddevguides 0 9
memcached
END
flush_all
OK
get finddevguides
END

Javaアプリケーションを使用したデータのクリア

Memcachedサーバーからデータを消去するには、Memcached flush メソッドを使用する必要があります。

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {

    //Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server sucessfully");
      System.out.println("set status:"+mcc.set("count", 900, "5").isDone());

     //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("count"));

     //now increase the stored value
      System.out.println("Increment value:"+mcc.incr("count", 2));

     //now decrease the stored value
      System.out.println("Decrement value:"+mcc.decr("count", 1));

     //now get the final stored value
      System.out.println("Get from Cache:"+mcc.get("count"));

     //now clear all this data
      System.out.println("Clear data:"+mcc.flush().isDone());
   }
}

出力

プログラムをコンパイルして実行すると、次の出力が表示されます-

Connection to server successfully
set status:true
Get from Cache:5
Increment value:7
Decrement value:6
Get from Cache:6
Clear data:true