Memcached - CAS-Befehl

CAS steht für Check-And-Set oder Compare-And-Swap. MemcachedCASMit dem Befehl werden die Daten festgelegt, wenn sie seit dem letzten Abruf nicht aktualisiert wurden. Wenn der Schlüssel in Memcached nicht vorhanden ist, wird er zurückgegebenNOT_FOUND.

Syntax

Die grundlegende Syntax von Memcached CAS Befehl ist wie unten gezeigt -

set key flags exptime bytes unique_cas_key [noreply]
value

Die Schlüsselwörter in der Syntax lauten wie folgt:

  • key - Dies ist der Name des Schlüssels, mit dem Daten gespeichert und aus Memcached abgerufen werden.

  • flags - Dies ist die 32-Bit-Ganzzahl ohne Vorzeichen, die der Server mit den vom Benutzer bereitgestellten Daten speichert und beim Abrufen des Elements zusammen mit den Daten zurückgibt.

  • exptime- Dies ist die Ablaufzeit in Sekunden. 0 bedeutet keine Verzögerung. Wenn die Exptime mehr als 30 Tage beträgt, verwendet Memcached sie als UNIX-Zeitstempel für den Ablauf.

  • bytes- Es ist die Anzahl der Bytes im Datenblock, die gespeichert werden müssen. Dies ist die Länge der Daten, die in Memcached gespeichert werden müssen.

  • unique_cas_key - Es ist der eindeutige Schlüssel get from get Befehl.

  • noreply (optional) - Dieser Parameter weist den Server an, keine Antwort zu senden.

  • value- Es sind die Daten, die gespeichert werden müssen. Daten müssen in einer neuen Zeile übergeben werden, nachdem der Befehl mit den oben genannten Optionen ausgeführt wurde.

Ausgabe

Die Ausgabe des Befehls ist wie folgt:

STORED
  • STORED zeigt Erfolg an.

  • ERROR Zeigt einen Fehler beim Speichern von Daten oder eine falsche Syntax an.

  • EXISTS zeigt an, dass jemand die CAS-Daten seit dem letzten Abruf geändert hat.

  • NOT_FOUND Gibt an, dass der Schlüssel auf dem Memcached-Server nicht vorhanden ist.

Beispiel

Um einen CAS-Befehl in Memcached auszuführen, müssen Sie ein CAS-Token aus dem Memcached-Get-Befehl abrufen.

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

CAS Verwenden der Java-Anwendung

Um CAS-Daten von einem Memcached-Server abzurufen, müssen Sie Memcached verwenden gets Methode.

Beispiel

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("tutorialspoint", 900, "memcached").isDone());

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

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

Ausgabe

Beim Kompilieren und Ausführen des Programms wird die folgende Ausgabe angezeigt:

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