Memcached - Guida rapida

Memcached è un sistema di memorizzazione nella cache distribuita, ad alte prestazioni e open source, progettato per accelerare le applicazioni web dinamiche riducendo il carico del database. È un dizionario di valori-chiave di stringhe, oggetti e così via archiviati nella memoria, risultante da chiamate di database, chiamate API o rendering di pagine.

Memcached è stato sviluppato da Brad Fitzpatrick per LiveJournal nel 2003. Tuttavia, ora è utilizzato da Netlog, Facebook, Flickr, Wikipedia, Twitter e YouTube, tra gli altri.

Le caratteristiche principali di Memcached sono le seguenti:

  • È open source.

  • Il server Memcached è una grande tabella hash.

  • Riduce notevolmente il carico del database

  • È perfettamente efficiente per i siti Web con un carico di database elevato.

  • È distribuito con licenza Berkeley Software Distribution (BSD).

  • È un'applicazione client-server su TCP o UDP.

Memcached non è -

  • un archivio dati persistente

  • un database

  • application-specific

  • una grande cache di oggetti

  • tollerante ai guasti o altamente disponibile

Installazione di Memcached su Ubuntu

Per installare Memcached su Ubuntu, vai al terminale e digita i seguenti comandi:

$sudo apt-get update $sudo apt-get install memcached

Conferma dell'installazione di Memcached

Per confermare se Memcached è installato o meno, è necessario eseguire il comando indicato di seguito. Questo comando mostra che Memcached è in esecuzione sulla porta predefinita11211.

$ps aux | grep memcached

Per eseguire Memcached server su una porta diversa, eseguire il comando indicato di seguito. Questo comando avvia il server sulla porta TCP 11111 e ascolta sulla porta UDP 11111 come processo daemon.

$memcached -p 11111 -U 11111 -u user -d

È possibile eseguire più istanze del server Memcached tramite un'unica installazione.

Configurazione dell'ambiente Java Memcached

Per usare Memcached nel tuo programma Java, devi scaricare spymemcached-2.10.3.jar e imposta questo vaso nel classpath.

Per connettersi a un server Memcached, è necessario utilizzare il comando telnet sui nomi HOST e PORT.

Sintassi

La sintassi di base del comando telnet Memcached è come mostrato di seguito:

$telnet HOST PORT

Qui, HOST e PORT sono rispettivamente l'IP della macchina e il numero di porta su cui è in esecuzione il server Memcached.

Esempio

L'esempio seguente mostra come connettersi a un server Memcached ed eseguire un semplice comando set e get. Supponiamo che il server Memcached sia in esecuzione sull'host 127.0.0.1 e sulla porta 11211.

$telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
// now store some data and get it from memcached server
set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END

Connessione dall'applicazione Java

Per connettere il server Memcached dal tuo programma java, devi aggiungere il jar Memcached nel tuo classpath come mostrato nel capitolo precedente. Supponiamo che il server Memcached sia in esecuzione sull'host 127.0.0.1 e sulla porta 11211. -

Esempio

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 sucessfully");
      
      //not set data into memcached server
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successfully
set status:true
Get from Cache:memcached.

Il terminale potrebbe mostrare anche pochi messaggi informativi, che possono essere ignorati.

Memcached set comando viene utilizzato per impostare un nuovo valore su una chiave nuova o esistente.

Sintassi

La sintassi di base di Memcached set il comando è come mostrato di seguito -

set key flags exptime bytes [noreply] 
value

Le parole chiave nella sintassi sono come descritte di seguito:

  • key - È il nome della chiave con cui i dati vengono memorizzati e recuperati da Memcached.

  • flags - È l'intero senza segno a 32 bit che il server memorizza con i dati forniti dall'utente e restituisce insieme ai dati quando l'elemento viene recuperato.

  • exptime- È il tempo di scadenza in secondi. 0 significa nessun ritardo. Se exptime è superiore a 30 giorni, Memcached lo utilizza come timestamp UNIX per la scadenza.

  • bytes- È il numero di byte nel blocco dati che deve essere memorizzato. Questa è la lunghezza dei dati che devono essere archiviati in Memcached.

  • noreply (optional) - È un parametro che informa il server di non inviare alcuna risposta.

  • value- Sono i dati che devono essere archiviati. I dati devono essere passati sulla nuova riga dopo aver eseguito il comando con le opzioni precedenti.

Produzione

L'output del comando è come mostrato di seguito:

STORED
  • STORED indica il successo.

  • ERROR indica una sintassi errata o un errore durante il salvataggio dei dati.

Esempio

Nell'esempio seguente, usiamo tutorialspoint come chiave e impostiamo il valore Memcached in esso con un tempo di scadenza di 900 secondi.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
Memcached
END

Imposta dati utilizzando l'applicazione Java

Per impostare una chiave nel server Memcached, è necessario utilizzare Memcached set metodo.

Esempio

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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successfully
set status:true
Get from Cache:memcached

Memcached addcomando viene utilizzato per impostare un valore su una nuova chiave. Se la chiave esiste già, restituisce l'output NOT_STORED.

Sintassi

La sintassi di base di Memcached add il comando è come mostrato di seguito -

add key flags exptime bytes [noreply]
value

Le parole chiave nella sintassi sono come descritte di seguito:

  • key - È il nome della chiave con cui i dati vengono memorizzati e recuperati da Memcached.

  • flags - È l'intero senza segno a 32 bit che il server memorizza con i dati forniti dall'utente e restituisce insieme ai dati quando l'elemento viene recuperato.

  • exptime- È il tempo di scadenza in secondi. 0 significa nessun ritardo. Se exptime è superiore a 30 giorni, Memcached lo utilizza come timestamp UNIX per la scadenza.

  • bytes- È il numero di byte nel blocco dati che deve essere memorizzato. Questa è la lunghezza dei dati che devono essere archiviati in Memcached.

  • noreply (optional) - È un parametro che informa il server di non inviare alcuna risposta.

  • value- Sono i dati che devono essere archiviati. I dati devono essere passati sulla nuova riga dopo aver eseguito il comando con le opzioni precedenti.

Produzione

L'output del comando è come mostrato di seguito:

STORED
  • STORED indica il successo.

  • NOT_STORED indica che i dati non sono archiviati in Memcached.

Esempio

Nell'esempio seguente, usiamo "key" come chiave e aggiungiamo il valore Memcached con un tempo di scadenza di 900 secondi.

add key 0 900 9
memcached
STORED
get key
VALUE key 0 9
Memcached
END

Uscita di errore

add key 0 900 5
redis
NOT_STORED

Aggiungi dati utilizzando l'applicazione Java

Per aggiungere dati in un server Memcached, è necessario utilizzare Memcached add metodo.

Esempio

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("add status:"+mcc.add("tutorialspoint", 900, "redis").done);
      System.out.println("add status:"+mcc.add("tp", 900, "redis").done);
      
      // Get value from cache
      System.out.println("Get from Cache tp:"+mcc.get("tp"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successful
add status:false
add status:true
Get from Cache tp:redis

Memcached replacecomando viene utilizzato per sostituire il valore di una chiave esistente. Se la chiave non esiste, restituisce l'output NOT_STORED.

Sintassi

La sintassi di base di Memcached replace il comando è come mostrato di seguito -

replace key flags exptime bytes [noreply]
value

Le parole chiave nella sintassi sono come descritte di seguito:

  • key - È il nome della chiave con cui i dati vengono memorizzati e recuperati da Memcached.

  • flags - È l'intero senza segno a 32 bit che il server memorizza con i dati forniti dall'utente e restituisce insieme ai dati quando l'elemento viene recuperato.

  • exptime- È il tempo di scadenza in secondi. 0 significa nessun ritardo. Se exptime è superiore a 30 giorni, Memcached lo utilizza come timestamp UNIX per la scadenza.

  • bytes- È il numero di byte nel blocco dati che deve essere memorizzato. Questa è la lunghezza dei dati che devono essere archiviati nella Memcached.

  • noreply (optional) - È un parametro che informa il server di non inviare alcuna risposta.

  • value- Sono i dati che devono essere archiviati. I dati devono essere passati sulla nuova riga dopo aver eseguito il comando con le opzioni precedenti.

Produzione

L'output del comando è come mostrato di seguito:

STORED
  • STORED indica il successo.

  • NOT_STORED indica che i dati non sono archiviati in Memcached.

Esempio

Nell'esempio seguente, utilizziamo "key" come chiave e memorizziamo memcached in essa con un tempo di scadenza di 900 secondi. Successivamente, la stessa chiave viene sostituita con il valore "redis".

add key 0 900 9
memcached
STORED
get key
VALUE key 0 9
memcached
END
replace key 0 900 5
redis
get key
VALUE key 0 5
redis
END

Sostituisci i dati utilizzando l'applicazione Java

Per sostituire i dati in un server Memcached, è necessario utilizzare Memcached replace metodo.

Esempio

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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // now replace the existing data
      System.out.println("Replace cache:"+mcc.replace("tutorialspoint", 900, "redis").done);
      
      // get the updated data
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successfully
set status:true
Get from Cache:memcached
Replace cache:true
Get from Cache:redis

Memcached appendcomando viene utilizzato per aggiungere alcuni dati in una chiave esistente. I dati vengono memorizzati dopo i dati esistenti della chiave.

Sintassi

La sintassi di base di Memcached append il comando è come mostrato di seguito -

append key flags exptime bytes [noreply]
value

Le parole chiave nella sintassi sono le seguenti:

  • key - È il nome della chiave con cui i dati vengono memorizzati e recuperati da Memcached.

  • flags - È l'intero senza segno a 32 bit che il server memorizza con i dati forniti dall'utente e restituisce insieme ai dati quando l'elemento viene recuperato.

  • exptime- È il tempo di scadenza in secondi. 0 significa nessun ritardo. Se exptime è superiore a 30 giorni, Memcached lo utilizza come timestamp UNIX per la scadenza.

  • bytes- È il numero di byte nel blocco dati che deve essere memorizzato. Questa è la lunghezza dei dati che devono essere archiviati in Memcached.

  • noreply (optional) - È un parametro che informa il server di non inviare alcuna risposta.

  • value- Sono i dati che devono essere archiviati. I dati devono essere passati sulla nuova riga dopo aver eseguito il comando con le opzioni precedenti.

Produzione

L'output del comando è come mostrato di seguito:

STORED
  • STORED indica il successo.

  • NOT_STORED indica che la chiave non esiste nel server Memcached.

  • CLIENT_ERROR indica un errore.

Esempio

Nell'esempio seguente, proviamo ad aggiungere alcuni dati in una chiave che non esiste. Quindi, Memcached ritornaNOT_STORED. Successivamente, impostiamo una chiave e vi accodiamo i dati.

append tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
append tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
memcachedredis
END

Aggiungi dati utilizzando l'applicazione Java

Per aggiungere dati in un server Memcached, è necessario utilizzare Memcached append metodo.

Esempio

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 value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // now append some data into existing key
      System.out.println("Append to cache:"+mcc.append("tutorialspoint", "redis").isDone());
      
      // get the updated key
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successful
set status:true
Get from Cache:memcached
Append to cache:true
Get from Cache:memcachedredis

Memcached prependcomando viene utilizzato per aggiungere alcuni dati in una chiave esistente. I dati vengono memorizzati prima dei dati esistenti della chiave.

Sintassi

La sintassi di base di Memcached prepend il comando è come mostrato di seguito -

prepend key flags exptime bytes [noreply]
value

Le parole chiave nella sintassi sono le seguenti:

  • key - È il nome della chiave con cui i dati vengono memorizzati e recuperati in Memcached.

  • flags - È l'intero senza segno a 32 bit che il server memorizza con i dati forniti dall'utente e restituisce insieme ai dati quando l'elemento viene recuperato.

  • exptime- È il tempo di scadenza in secondi. 0 significa nessun ritardo. Se exptime è superiore a 30 giorni, Memcached lo utilizza come timestamp UNIX per la scadenza.

  • bytes- È il numero di byte nel blocco dati che deve essere memorizzato. Questa è la lunghezza dei dati che devono essere archiviati in Memcached.

  • noreply (optional) −È un parametro che informa il server di non inviare alcuna risposta.

  • value- Sono i dati che devono essere archiviati. I dati devono essere passati sulla nuova riga dopo aver eseguito il comando con le opzioni precedenti.

Produzione

L'output del comando è come mostrato di seguito:

STORED
  • STORED indica il successo.

  • NOT_STORED indica che la chiave non esiste nel server Memcached.

  • CLIENT_ERROR indica un errore.

Esempio

Nell'esempio seguente, aggiungiamo alcuni dati in una chiave che non esiste. Quindi, Memcached ritornaNOT_STORED. Successivamente, impostiamo una chiave e anteponiamo i dati al suo interno.

prepend tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
prepend tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
redismemcached
END

Anteponi i dati utilizzando l'applicazione Java

Per anteporre i dati in un server Memcached, è necessario utilizzare Memcached prepend metodo.

Esempio

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 value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // now append some data into existing key
      System.out.println("Prepend to cache:"+mcc.prepend("tutorialspoint", "redis").isDone());
      
      // get the updated key
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successful
set status:true
Get from Cache:memcached
Prepend to cache:true
Get from Cache:redismemcached

CAS sta per Check-And-Set o Compare-and-Swap. MemcachedCAScomando viene utilizzato per impostare i dati se non vengono aggiornati dall'ultimo recupero. Se la chiave non esiste in Memcached, ritornaNOT_FOUND.

Sintassi

La sintassi di base di Memcached CAS il comando è come mostrato di seguito -

set key flags exptime bytes unique_cas_key [noreply]
value

Le parole chiave nella sintassi sono le seguenti:

  • key - È il nome della chiave con cui i dati vengono memorizzati e recuperati da Memcached.

  • flags - È l'intero senza segno a 32 bit che il server memorizza con i dati forniti dall'utente e restituisce insieme ai dati quando l'elemento viene recuperato.

  • exptime- È il tempo di scadenza in secondi. 0 significa nessun ritardo. Se exptime è superiore a 30 giorni, Memcached lo utilizza come timestamp UNIX per la scadenza.

  • bytes- È il numero di byte nel blocco dati che deve essere memorizzato. Questa è la lunghezza dei dati che devono essere archiviati in Memcached.

  • unique_cas_key - È la chiave unica ottenuta dal comando gets.

  • noreply (optional) - È un parametro che informa il server di non inviare alcuna risposta.

  • value- Sono i dati che devono essere archiviati. I dati devono essere passati su una nuova riga dopo aver eseguito il comando con le opzioni precedenti.

Produzione

L'output del comando è come mostrato di seguito:

STORED
  • STORED indica il successo.

  • ERROR indica un errore durante il salvataggio dei dati o una sintassi errata.

  • EXISTS indica che qualcuno ha modificato i dati CAS dall'ultimo recupero.

  • NOT_FOUND indica che la chiave non esiste nel server Memcached.

Esempio

Per eseguire un comando CAS in Memcached, è necessario ottenere un token CAS dal comando Get di Memcached.

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 utilizzando l'applicazione Java

Per ottenere dati CAS da un server Memcached, è necessario utilizzare Memcached gets metodo.

Esempio

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

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

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

Memcached getcomando viene utilizzato per ottenere il valore memorizzato nella chiave. Se la chiave non esiste in Memcached, non restituisce nulla.

Sintassi

La sintassi di base di Memcached get il comando è come mostrato di seguito -

get key

Esempio

Nell'esempio seguente, utilizziamo tutorialspoint come chiave e memorizziamo memcached al suo interno con un tempo di scadenza di 900 secondi.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END

Ottieni dati utilizzando l'applicazione Java

Per ottenere dati da un server Memcached, è necessario utilizzare Memcached get metodo.

Esempio

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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
     
     // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successfully
set status:true
Get from Cache:memcached

Memcached getscomando viene utilizzato per ottenere il valore con il token CAS. Se la chiave non esiste in Memcached, non restituisce nulla.

Sintassi

La sintassi di base di Memcached gets il comando è come mostrato di seguito -

get key

Esempio

set tutorialspoint 0 900 9
memcached
STORED
gets tutorialspoint
VALUE tutorialspoint 0 9 1
memcached
END

In questo esempio, utilizziamo tutorialspoint come chiave e memorizziamo memcached al suo interno con un tempo di scadenza di 900 secondi.

Ottieni dati CAS utilizzando l'applicazione Java

Per ottenere dati CAS da un server Memcached, è necessario utilizzare Memcached gets metodo.

Esempio

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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.gets("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successfully
set status:true
Get from Cache:{CasValue 2/memcached}

Memcached delete viene utilizzato per eliminare una chiave esistente dal server Memcached.

Sintassi

La sintassi di base di Memcached delete il comando è come mostrato di seguito -

delete key [noreply]

Produzione

Il comando CAS può produrre uno dei seguenti risultati:

  • DELETED indica l'eliminazione riuscita.

  • ERROR indica un errore durante l'eliminazione dei dati o una sintassi errata.

  • NOT_FOUND indica che la chiave non esiste nel server Memcached.

Esempio

In questo esempio, utilizziamo tutorialspoint come chiave e memorizziamo memcached al suo interno con un tempo di scadenza di 900 secondi. Successivamente, elimina la chiave memorizzata.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END
delete tutorialspoint
DELETED
get tutorialspoint
END
delete tutorialspoint
NOT_FOUND

Elimina i dati utilizzando l'applicazione Java

Per eliminare i dati da un server Memcached, è necessario utilizzare Memcached delete metodo.

Esempio

import java.net.InetSocketAddress;
import java.util.concurrent.Future;

import net.spy.memcached.MemcachedClient;

public class MemcachedJava {
   public static void main(String[] args) {
   
      try{
   
         // Connecting to Memcached server on localhost
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         System.out.println("Connection to server sucessful.");

         // add data to memcached server
         Future fo = mcc.set("tutorialspoint", 900, "World's largest online tutorials library");

         // print status of set method
         System.out.println("set status:" + fo.get());

         // retrieve and check the value from cache
         System.out.println("tutorialspoint value in cache - " + mcc.get("tutorialspoint"));

         // try to add data with existing key
         Future fo = mcc.delete("tutorialspoint");

         // print status of delete method
         System.out.println("delete status:" + fo.get());

         // retrieve and check the value from cache
         System.out.println("tutorialspoint value in cache - " + mcc.get("codingground"));

         // Shutdowns the memcached client
         mcc.shutdown();
         
      }catch(Exception ex)
         System.out.println(ex.getMessage());
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successful
set status:true
tutorialspoint value in cache - World's largest online tutorials library
delete status:true
tutorialspoint value in cache - null

Memcached delete viene utilizzato per eliminare una chiave esistente dal server Memcached.

Sintassi

La sintassi di base di Memcached delete il comando è come mostrato di seguito -

delete key

Se la chiave viene eliminata correttamente, restituisce DELETED. Se la chiave non viene trovata, restituisce NOT_FOUND, altrimenti restituisce ERROR.

Esempio

In questo esempio, utilizziamo tutorialspoint come chiave e memorizziamo memcached al suo interno con un tempo di scadenza di 900 secondi. Successivamente, elimina la chiave memorizzata.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END
delete tutorialspoint
DELETED
get tutorialspoint
END
delete tutorialspoint
NOT_FOUND

Elimina i dati utilizzando l'applicazione Java

Per eliminare i dati da un server Memcached, è necessario utilizzare Memcached delete metodo.

Esempio

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").done);
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // delete value from cache
      System.out.println("Delete from Cache:"+mcc.delete("tutorialspoint").isDone());
      
      // check whether value exists or not
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successful
set status:true
Get from Cache:memcached
Delete from Cache:true
Get from Cache:null

Memcached incr e decri comandi vengono utilizzati per aumentare o diminuire il valore numerico di una chiave esistente. Se la chiave non viene trovata, ritornaNOT_FOUND. Se la chiave non è numerica, ritornaCLIENT_ERROR cannot increment or decrement non-numeric value. Altrimenti,ERROR viene restituito.

Sintassi - incr

La sintassi di base di Memcached incr il comando è come mostrato di seguito -

incr key increment_value

Esempio

In questo esempio, usiamo i visitatori come chiave e impostiamo 10 inizialmente in essa, quindi incrementiamo i visitatori di 5.

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
incr visitors 5
15
get visitors
VALUE visitors 0 2
15
END

Sintassi - decr

La sintassi di base di Memcached decr il comando è come mostrato di seguito

decr key decrement_value

Esempio

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
decr visitors 5
5
get visitors
VALUE visitors 0 1
5
END

Incr / Decr utilizzando l'applicazione Java

Per aumentare o diminuire i dati in un server Memcached, è necessario utilizzare Memcached incr or decr metodi rispettivamente.

Esempio

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 sucessfully");
      System.out.println("set status:"+mcc.set("count", 900, "5").isDone());
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("count"));
      
      // now increase the stored value
      System.out.println("Increment value:"+mcc.incr("count", 2));
      
      // now decrease the stored value
      System.out.println("Decrement value:"+mcc.decr("count", 1));
      
      // now get the final stored value
      System.out.println("Get from Cache:"+mcc.get("count"));
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successfully
set status:true
Get from Cache:5
Increment value:7
Decrement value:6
Get from Cache:6

Memcached stats comando viene utilizzato per restituire le statistiche del server come PID, versione, connessioni, ecc.

Sintassi

La sintassi di base di Memcached stats il comando è come mostrato di seguito -

stats

Esempio

stats
STAT pid 1162
STAT uptime 5022
STAT time 1415208270
STAT version 1.4.14
STAT libevent 2.0.19-stable
STAT pointer_size 64
STAT rusage_user 0.096006
STAT rusage_system 0.152009
STAT curr_connections 5
STAT total_connections 6

STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 6
STAT cmd_set 4
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 4
STAT get_misses 2
STAT delete_misses 1
STAT delete_hits 1

STAT incr_misses 2
STAT incr_hits 1
STAT decr_misses 0
STAT decr_hits 1
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0

STAT auth_errors 0
STAT bytes_read 262
STAT bytes_written 313
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16

STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 1
STAT evicted_unfetched 0
STAT bytes 142
STAT curr_items 2
STAT total_items 6
STAT evictions 0
STAT reclaimed 1
END

Statistiche utilizzando l'applicazione Java

Per ottenere statistiche da un server Memcached, è necessario utilizzare Memcached stats metodo.

Esempio

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("Stats:"+mcc.stats);
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successful
Stats:[/127.0.0.1:11211:[delete_hits:0, bytes:71, total_items:4,
rusage_system:0.220013, touch_misses:0, cmd_touch:0, listen_disabled_num:0,
auth_errors:0, evictions:0, version:1.4.14, pointer_size:64, time:1417279366,
incr_hits:1, threads:4, expired_unfetched:0, limit_maxbytes:67108864,
hash_is_expanding:0, bytes_read:170, curr_connections:8, get_misses:1,
reclaimed:0, bytes_written:225, hash_power_level:16, connection_structures:9,
cas_hits:0, delete_misses:0, total_connections:11, rusage_user:0.356022,
cmd_flush:0, libevent:2.0.19-stable, uptime:12015, reserved_fds:20,
touch_hits:0, cas_badval:0, pid:1138, get_hits:2, curr_items:1, cas_misses:0,
accepting_conns:1, evicted_unfetched:0, cmd_get:3, cmd_set:2, auth_cmds:0,
incr_misses:1, hash_bytes:524288, decr_misses:1, decr_hits:1, conn_yields:0]]

Memcached stats items Il comando viene utilizzato per ottenere statistiche sugli elementi come conteggio, età, sfratto, ecc. organizzate per ID slabs.

Sintassi

La sintassi di base di Memcached stats items il comando è come mostrato di seguito -

stats items

Esempio

stats items
STAT items:1:number 1
STAT items:1:age 7
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END

Memcached stats slabs comando visualizza le statistiche delle lastre come dimensioni, utilizzo della memoria, comandi, conteggio ecc. organizzate per ID lastre.

Sintassi

La sintassi di base di Memcached stats slabs il comando è come mostrato di seguito -

stats slabs

Esempio

stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 1
STAT 1:free_chunks 10921
STAT 1:free_chunks_end 0
STAT 1:mem_requested 71
STAT 1:get_hits 0
STAT 1:cmd_set 1
STAT 1:delete_hits 0
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END

Memcached stats sizesIl comando fornisce informazioni sulle dimensioni e sul numero di elementi di ciascuna dimensione all'interno della cache. Le informazioni vengono restituite in due colonne. La prima colonna è la dimensione dell'elemento (arrotondata al limite di 32 byte più vicino) e la seconda colonna è il conteggio del numero di elementi di quella dimensione all'interno della cache.

Sintassi

La sintassi di base di Memcached stats sizes il comando è come mostrato di seguito -

stats sizes

Esempio

stats sizes
STAT 96 1
END

Le statistiche sulle dimensioni degli articoli sono utili solo per determinare le dimensioni degli oggetti che si stanno archiviando. Poiché l'effettiva allocazione della memoria è rilevante solo in termini di dimensione del blocco e dimensione della pagina, le informazioni sono utili solo durante un'attenta sessione di debug o diagnostica.

Memcached flush_allviene utilizzato per eliminare tutti i dati (coppie chiave-valore) dal server Memcached. Accetta un parametro opzionale chiamatotime che imposta un tempo dopo il quale i dati Memcached devono essere cancellati.

Sintassi

La sintassi di base di Memcached flush_all il comando è come mostrato di seguito -

flush_all [time] [noreply]

Il comando precedente restituisce sempre OK.

Esempio

Nell'esempio seguente, memorizziamo alcuni dati nel server Memcached e quindi cancelliamo tutti i dati.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END
flush_all
OK
get tutorialspoint
END

Cancella dati utilizzando l'applicazione Java

Per cancellare i dati da un server Memcached, è necessario utilizzare Memcached flush metodo.

Esempio

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 sucessfully");
      System.out.println("set status:"+mcc.set("count", 900, "5").isDone());
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("count"));
     
      // now increase the stored value
      System.out.println("Increment value:"+mcc.incr("count", 2));
     
      // now decrease the stored value
      System.out.println("Decrement value:"+mcc.decr("count", 1));
      
      // now get the final stored value
      System.out.println("Get from Cache:"+mcc.get("count"));
      
      // now clear all this data
      System.out.println("Clear data:"+mcc.flush().isDone());
   }
}

Produzione

Durante la compilazione e l'esecuzione del programma, puoi vedere il seguente output:

Connection to server successfully
set status:true
Get from Cache:5
Increment value:7
Decrement value:6
Get from Cache:6
Clear data:true