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