Memcached - polecenie CAS

CAS oznacza Check-And-Set lub Compare-And-Swap. MemcachedCASpolecenie służy do ustawiania danych, jeśli nie zostały zaktualizowane od czasu ostatniego pobrania. Jeśli klucz nie istnieje w Memcached, to zwracaNOT_FOUND.

Składnia

Podstawowa składnia Memcached CAS polecenie jest jak pokazano poniżej -

set key flags exptime bytes unique_cas_key [noreply]
value

Słowa kluczowe w składni są takie, jak opisano poniżej -

  • key - Jest to nazwa klucza, za pomocą którego dane są przechowywane i pobierane z Memcached.

  • flags - Jest to 32-bitowa liczba całkowita bez znaku, którą serwer przechowuje z danymi dostarczonymi przez użytkownika i zwraca wraz z danymi po pobraniu elementu.

  • exptime- Jest to czas wygaśnięcia w sekundach. 0 oznacza brak opóźnienia. Jeśli exptime przekracza 30 dni, Memcached używa go jako uniksowego znacznika czasu wygaśnięcia.

  • bytes- Jest to liczba bajtów w bloku danych, które mają być zapisane. To jest długość danych, które muszą być przechowywane w Memcached.

  • unique_cas_key - Jest to unikalny klucz, który otrzymuje polecenie.

  • noreply (optional) - Jest to parametr, który informuje serwer, aby nie wysyłał żadnej odpowiedzi.

  • value- To dane, które muszą być przechowywane. Dane należy przekazać w nowej linii po wykonaniu polecenia z powyższymi opcjami.

Wynik

Dane wyjściowe polecenia są pokazane poniżej -

STORED
  • STORED wskazuje na sukces.

  • ERROR wskazuje błąd podczas zapisywania danych lub nieprawidłową składnię.

  • EXISTS wskazuje, że ktoś zmodyfikował dane CAS od ostatniego pobrania.

  • NOT_FOUND wskazuje, że klucz nie istnieje na serwerze Memcached.

Przykład

Aby wykonać polecenie CAS w Memcached, musisz pobrać token CAS z polecenia Memcached gets.

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 przy użyciu aplikacji Java

Aby pobrać dane CAS z serwera Memcached, musisz użyć Memcached gets metoda.

Przykład

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

Wynik

Podczas kompilowania i wykonywania programu zobaczysz następujące dane wyjściowe -

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