Memcached - CAS Komutu

CAS, Kontrol Et ve Ayarla veya Karşılaştır ve Değiştir anlamına gelir. MemcachedCASkomutu, son getirmeden sonra güncellenmemişse verileri ayarlamak için kullanılır. Anahtar Memcached'de yoksa geri dönerNOT_FOUND.

Sözdizimi

Memcached'in temel sözdizimi CAS komut aşağıda gösterildiği gibidir -

set key flags exptime bytes unique_cas_key [noreply]
value

Söz dizimindeki anahtar kelimeler aşağıda açıklandığı gibidir−

  • key - Verilerin saklandığı ve Memcached'den alındığı anahtarın adıdır.

  • flags - Sunucunun kullanıcı tarafından sağlanan verilerle depoladığı ve öğe alındığında verilerle birlikte geri döndüğü 32 bitlik işaretsiz tamsayıdır.

  • exptime- Saniye cinsinden sona erme süresidir. 0 gecikme yok demektir. Geçerlilik süresi 30 günden fazlaysa Memcached, bunu sona erme için bir UNIX zaman damgası olarak kullanır.

  • bytes- Depolanması gereken veri bloğundaki bayt sayısıdır. Bu, Memcached'de depolanması gereken verilerin uzunluğudur.

  • unique_cas_key - Komut alırken elde edilen benzersiz anahtardır.

  • noreply (optional) - Sunucuya herhangi bir cevap göndermemesini bildiren bir parametredir.

  • value- Depolanması gereken verilerdir. Yukarıdaki seçeneklerle komut çalıştırıldıktan sonra verilerin yeni satıra aktarılması gerekir.

Çıktı

Komutun çıktısı aşağıda gösterildiği gibidir -

STORED
  • STORED başarıyı gösterir.

  • ERROR verileri kaydederken hatayı veya yanlış sözdizimini gösterir.

  • EXISTS birisinin son getirmeden bu yana CAS verilerini değiştirdiğini gösterir.

  • NOT_FOUND anahtarın Memcached sunucusunda olmadığını gösterir.

Misal

Memcached'de bir CAS komutu yürütmek için Memcached gets komutundan bir CAS belirteci almanız gerekir.

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 Uygulamasını Kullanan CAS

CAS verilerini Memcached sunucusundan almak için Memcached'i kullanmanız gerekir. gets yöntem.

Misal

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

Çıktı

Programı derlerken ve çalıştırırken, aşağıdaki çıktıyı göreceksiniz -

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