Memcached-cas

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

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