Memcached - Guia rápido

Memcached é um sistema de armazenamento em cache de memória distribuída de software livre e alto desempenho, destinado a acelerar aplicativos da Web dinâmicos reduzindo a carga do banco de dados. É um dicionário de valores-chave de strings, objetos, etc., armazenados na memória, resultantes de chamadas de banco de dados, chamadas de API ou renderização de página.

Memcached foi desenvolvido por Brad Fitzpatrick para LiveJournal em 2003. No entanto, agora está sendo usado pela Netlog, Facebook, Flickr, Wikipedia, Twitter e YouTube, entre outros.

Os principais recursos do Memcached são os seguintes -

  • É um código aberto.

  • O servidor Memcached é uma grande tabela hash.

  • Reduz significativamente a carga do banco de dados

  • É perfeitamente eficiente para sites com alta carga de banco de dados.

  • É distribuído sob a licença Berkeley Software Distribution (BSD).

  • É um aplicativo cliente-servidor sobre TCP ou UDP.

Memcached não é -

  • um armazenamento de dados persistente

  • um banco de dados

  • application-specific

  • um grande cache de objetos

  • tolerante a falhas ou altamente disponível

Instalando Memcached no Ubuntu

Para instalar o Memcached no Ubuntu, vá para o terminal e digite os seguintes comandos -

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

Confirmando a instalação do Memcached

Para confirmar se o Memcached está instalado ou não, você precisa executar o comando fornecido a seguir. Este comando mostra que o Memcached está sendo executado na porta padrão11211.

$ps aux | grep memcached

Para executar o servidor Memcached em uma porta diferente, execute o comando fornecido a seguir. Este comando inicia o servidor na porta TCP 11111 e escuta na porta UDP 11111 como um processo daemon.

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

Você pode executar várias instâncias do servidor Memcached em uma única instalação.

Configuração do ambiente Java Memcached

Para usar o Memcached em seu programa Java, você precisa fazer o download spymemcached-2.10.3.jar e configurar este jar no classpath.

Para se conectar a um servidor Memcached, você precisa usar o comando telnet nos nomes HOST e PORT.

Sintaxe

A sintaxe básica do comando telnet do Memcached é mostrada abaixo -

$telnet HOST PORT

Aqui, HOST e PORT são o IP da máquina e o número da porta respectivamente, nos quais o servidor Memcached está executando.

Exemplo

O exemplo a seguir mostra como se conectar a um servidor Memcached e executar um comando simples set e get. Suponha que o servidor Memcached esteja em execução no host 127.0.0.1 e na 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

Conexão do aplicativo Java

Para conectar o servidor Memcached de seu programa java, você precisa adicionar o jar Memcached em seu classpath, conforme mostrado no capítulo anterior. Suponha que o servidor Memcached esteja sendo executado no host 127.0.0.1 e na porta 11211. -

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

O terminal também pode mostrar algumas mensagens informativas, essas podem ser ignoradas.

Memcached set comando é usado para definir um novo valor para uma chave nova ou existente.

Sintaxe

A sintaxe básica do Memcached set comando é como mostrado abaixo -

set key flags exptime bytes [noreply] 
value

As palavras-chave na sintaxe são as descritas abaixo -

  • key - É o nome da chave pela qual os dados são armazenados e recuperados do Memcached.

  • flags - É o inteiro não assinado de 32 bits que o servidor armazena com os dados fornecidos pelo usuário e retorna junto com os dados quando o item é recuperado.

  • exptime- É o tempo de expiração em segundos. 0 significa nenhum atraso. Se o tempo de exptime for superior a 30 dias, o Memcached o usará como carimbo de data / hora UNIX para expiração.

  • bytes- É o número de bytes no bloco de dados que precisa ser armazenado. Este é o comprimento dos dados que precisam ser armazenados no Memcached.

  • noreply (optional) - É um parâmetro que informa ao servidor para não enviar resposta.

  • value- São os dados que precisam ser armazenados. Os dados precisam ser passados ​​na nova linha após a execução do comando com as opções acima.

Resultado

A saída do comando é mostrada abaixo -

STORED
  • STORED indica sucesso.

  • ERROR indica sintaxe incorreta ou erro ao salvar dados.

Exemplo

No exemplo a seguir, usamos tutorialspoint como a chave e definimos o valor Memcached nele com um tempo de expiração de 900 segundos.

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

Definir dados usando aplicativo Java

Para definir uma chave no servidor Memcached, você precisa usar o Memcached set método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached addcomando é usado para definir um valor para uma nova chave. Se a chave já existe, ela fornece a saída NOT_STORED.

Sintaxe

A sintaxe básica do Memcached add comando é como mostrado abaixo -

add key flags exptime bytes [noreply]
value

As palavras-chave na sintaxe são as descritas abaixo -

  • key - É o nome da chave pela qual os dados são armazenados e recuperados do Memcached.

  • flags - É o inteiro não assinado de 32 bits que o servidor armazena com os dados fornecidos pelo usuário e retorna junto com os dados quando o item é recuperado.

  • exptime- É o tempo de expiração em segundos. 0 significa nenhum atraso. Se o tempo de exptime for superior a 30 dias, o Memcached o usará como um carimbo de data / hora UNIX para expiração.

  • bytes- É o número de bytes no bloco de dados que precisa ser armazenado. Este é o comprimento dos dados que precisam ser armazenados no Memcached.

  • noreply (optional) - É um parâmetro que informa ao servidor para não enviar resposta.

  • value- São os dados que precisam ser armazenados. Os dados precisam ser passados ​​na nova linha após a execução do comando com as opções acima.

Resultado

A saída do comando é mostrada abaixo -

STORED
  • STORED indica sucesso.

  • NOT_STORED indica que os dados não estão armazenados no Memcached.

Exemplo

No exemplo a seguir, usamos 'chave' como a chave e adicionamos o valor Memcached nela com um tempo de expiração de 900 segundos.

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

Saída de falha

add key 0 900 5
redis
NOT_STORED

Adicionar dados usando aplicativo Java

Para adicionar dados em um servidor Memcached, você precisa usar o Memcached add método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached replacecomando é usado para substituir o valor de uma chave existente. Se a chave não existir, ele fornecerá a saída NOT_STORED.

Sintaxe

A sintaxe básica do Memcached replace comando é como mostrado abaixo -

replace key flags exptime bytes [noreply]
value

As palavras-chave na sintaxe são as descritas abaixo -

  • key - É o nome da chave pela qual os dados são armazenados e recuperados do Memcached.

  • flags - É o inteiro não assinado de 32 bits que o servidor armazena com os dados fornecidos pelo usuário e retorna junto com os dados quando o item é recuperado.

  • exptime- É o tempo de expiração em segundos. 0 significa nenhum atraso. Se o tempo de exptime for superior a 30 dias, o Memcached o usará como um carimbo de data / hora UNIX para expiração.

  • bytes- É o número de bytes no bloco de dados que precisa ser armazenado. Este é o comprimento dos dados que precisam ser armazenados no Memcached.

  • noreply (optional) - É um parâmetro que informa ao servidor para não enviar resposta.

  • value- São os dados que precisam ser armazenados. Os dados precisam ser passados ​​na nova linha após a execução do comando com as opções acima.

Resultado

A saída do comando é mostrada abaixo -

STORED
  • STORED indica sucesso.

  • NOT_STORED indica que os dados não estão armazenados no Memcached.

Exemplo

No exemplo a seguir, usamos 'key' como a chave e armazenamos memcached nela com um tempo de expiração de 900 segundos. Depois disso, a mesma chave é substituída pelo valor '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

Substituir dados usando aplicativo Java

Para substituir os dados em um servidor Memcached, você precisa usar o Memcached replace método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached appendcomando é usado para adicionar alguns dados em uma chave existente. Os dados são armazenados após os dados existentes da chave.

Sintaxe

A sintaxe básica do Memcached append comando é como mostrado abaixo -

append key flags exptime bytes [noreply]
value

As palavras-chave na sintaxe são as descritas abaixo−

  • key - É o nome da chave pela qual os dados são armazenados e recuperados do Memcached.

  • flags - É o inteiro não assinado de 32 bits que o servidor armazena com os dados fornecidos pelo usuário e retorna junto com os dados quando o item é recuperado.

  • exptime- É o tempo de expiração em segundos. 0 significa nenhum atraso. Se o tempo de exptime for superior a 30 dias, o Memcached o usará como um carimbo de data / hora UNIX para expiração.

  • bytes- É o número de bytes no bloco de dados que precisa ser armazenado. Este é o comprimento dos dados que precisam ser armazenados no Memcached.

  • noreply (optional) - É um parâmetro que informa ao servidor não enviar resposta.

  • value- São os dados que precisam ser armazenados. Os dados precisam ser passados ​​na nova linha após a execução do comando com as opções acima.

Resultado

A saída do comando é mostrada abaixo -

STORED
  • STORED indica sucesso.

  • NOT_STORED indica que a chave não existe no servidor Memcached.

  • CLIENT_ERROR indica erro.

Exemplo

No exemplo a seguir, tentamos adicionar alguns dados em uma chave que não existe. Portanto, o Memcached retornaNOT_STORED. Depois disso, definimos uma chave e acrescentamos dados a ela.

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

Anexar dados usando aplicativo Java

Para anexar dados em um servidor Memcached, você precisa usar o Memcached append método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached prependcomando é usado para adicionar alguns dados em uma chave existente. Os dados são armazenados antes dos dados existentes da chave.

Sintaxe

A sintaxe básica do Memcached prepend comando é como mostrado abaixo -

prepend key flags exptime bytes [noreply]
value

As palavras-chave na sintaxe são as descritas abaixo−

  • key - É o nome da chave pela qual os dados são armazenados e recuperados no Memcached.

  • flags - É o inteiro não assinado de 32 bits que o servidor armazena com os dados fornecidos pelo usuário e retorna junto com os dados quando o item é recuperado.

  • exptime- É o tempo de expiração em segundos. 0 significa nenhum atraso. Se o tempo de exptime for superior a 30 dias, o Memcached o usará como um carimbo de data / hora UNIX para expiração.

  • bytes- É o número de bytes no bloco de dados que precisa ser armazenado. Este é o comprimento dos dados que precisam ser armazenados no Memcached.

  • noreply (optional) −É um parâmetro que informa ao servidor não enviar resposta.

  • value- São os dados que precisam ser armazenados. Os dados precisam ser transmitidos na nova linha após a execução do comando com as opções acima.

Resultado

A saída do comando é mostrada abaixo -

STORED
  • STORED indica sucesso.

  • NOT_STORED indica que a chave não existe no servidor Memcached.

  • CLIENT_ERROR indica erro.

Exemplo

No exemplo a seguir, adicionamos alguns dados em uma chave que não existe. Portanto, o Memcached retornaNOT_STORED. Depois disso, definimos uma chave e acrescentamos os dados nela.

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

Anexar dados usando aplicativo Java

Para preceder dados em um servidor Memcached, você precisa usar o Memcached prepend método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

CAS significa Check-And-Set ou Compare-And-Swap. MemcachedCAScomando é usado para definir os dados se não forem atualizados desde a última busca. Se a chave não existir no Memcached, ela retornaráNOT_FOUND.

Sintaxe

A sintaxe básica do Memcached CAS comando é como mostrado abaixo -

set key flags exptime bytes unique_cas_key [noreply]
value

As palavras-chave na sintaxe são as descritas abaixo−

  • key - É o nome da chave pela qual os dados são armazenados e recuperados do Memcached.

  • flags - É o inteiro não assinado de 32 bits que o servidor armazena com os dados fornecidos pelo usuário e retorna junto com os dados quando o item é recuperado.

  • exptime- É o tempo de expiração em segundos. 0 significa nenhum atraso. Se o tempo de exptime for superior a 30 dias, o Memcached o usará como um carimbo de data / hora UNIX para expiração.

  • bytes- É o número de bytes no bloco de dados que precisa ser armazenado. Este é o comprimento dos dados que precisam ser armazenados no Memcached.

  • unique_cas_key - É a chave única obtida do comando gets.

  • noreply (optional) - É um parâmetro que informa ao servidor para não enviar resposta.

  • value- São os dados que precisam ser armazenados. Os dados precisam ser passados ​​em uma nova linha após a execução do comando com as opções acima.

Resultado

A saída do comando é mostrada abaixo -

STORED
  • STORED indica sucesso.

  • ERROR indica erro ao salvar dados ou sintaxe incorreta.

  • EXISTS indica que alguém modificou os dados CAS desde a última busca.

  • NOT_FOUND indica que a chave não existe no servidor Memcached.

Exemplo

Para executar um comando CAS no Memcached, você precisa obter um token CAS do comando Obtém do 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 usando aplicativo Java

Para obter dados CAS de um servidor Memcached, você precisa usar o Memcached gets método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached getcomando é usado para obter o valor armazenado na chave. Se a chave não existir no Memcached, ele não retornará nada.

Sintaxe

A sintaxe básica do Memcached get comando é como mostrado abaixo -

get key

Exemplo

No exemplo a seguir, usamos tutorialspoint como a chave e armazenamos memcached nele com um tempo de expiração de 900 segundos.

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

Obter dados usando o aplicativo Java

Para obter dados de um servidor Memcached, você precisa usar o Memcached get método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached getscomando é usado para obter o valor com o token CAS. Se a chave não existir no Memcached, ele não retornará nada.

Sintaxe

A sintaxe básica do Memcached gets comando é como mostrado abaixo -

get key

Exemplo

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

Neste exemplo, usamos tutorialspoint como a chave e armazenamos memcached nele com um tempo de expiração de 900 segundos.

Obter dados CAS usando aplicativo Java

Para obter dados CAS de um servidor Memcached, você precisa usar o Memcached gets método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached delete comando é usado para excluir uma chave existente do servidor Memcached.

Sintaxe

A sintaxe básica do Memcached delete comando é como mostrado abaixo -

delete key [noreply]

Resultado

O comando CAS pode produzir um dos seguintes resultados -

  • DELETED indica exclusão bem-sucedida.

  • ERROR indica erro ao excluir dados ou sintaxe incorreta.

  • NOT_FOUND indica que a chave não existe no servidor Memcached.

Exemplo

Neste exemplo, usamos tutorialspoint como uma chave e armazenamos memcached nele com um tempo de expiração de 900 segundos. Depois disso, ele exclui a chave armazenada.

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

Excluir dados usando aplicativo Java

Para excluir dados de um servidor Memcached, você precisa usar o Memcached delete método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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 comando é usado para excluir uma chave existente do servidor Memcached.

Sintaxe

A sintaxe básica do Memcached delete comando é como mostrado abaixo -

delete key

Se a chave for excluída com sucesso, ele retornará DELETED. Se a chave não for encontrada, retorna NOT_FOUND, caso contrário, retorna ERROR.

Exemplo

Neste exemplo, usamos tutorialspoint como uma chave e armazenamos memcached nele com um tempo de expiração de 900 segundos. Depois disso, ele exclui a chave armazenada.

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

Excluir dados usando aplicativo Java

Para excluir dados de um servidor Memcached, você precisa usar o Memcached delete método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached incr e decros comandos são usados ​​para aumentar ou diminuir o valor numérico de uma chave existente. Se a chave não for encontrada, ela retornaNOT_FOUND. Se a chave não for numérica, ele retornaCLIENT_ERROR cannot increment or decrement non-numeric value. De outra forma,ERROR é devolvido.

Sintaxe - incr

A sintaxe básica do Memcached incr comando é como mostrado abaixo -

incr key increment_value

Exemplo

Neste exemplo, usamos visitantes como chave e definimos 10 inicialmente nela, depois incrementamos os visitantes em 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

Sintaxe - decr

A sintaxe básica do Memcached decr comando é como mostrado abaixo

decr key decrement_value

Exemplo

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 usando aplicativo Java

Para aumentar ou diminuir os dados em um servidor Memcached, você precisa usar o Memcached incr or decr métodos respectivamente.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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

Memcached stats comando é usado para retornar estatísticas do servidor, como PID, versão, conexões, etc.

Sintaxe

A sintaxe básica do Memcached stats comando é como mostrado abaixo -

stats

Exemplo

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

Estatísticas usando aplicativo Java

Para obter estatísticas de um servidor Memcached, você precisa usar o Memcached stats método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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 comando é usado para obter estatísticas de itens, como contagem, idade, despejo, etc. organizados por ID de placas.

Sintaxe

A sintaxe básica do Memcached stats items comando é como mostrado abaixo -

stats items

Exemplo

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 exibe as estatísticas das placas, como tamanho, uso de memória, comandos, contagem, etc. organizadas por ID das placas.

Sintaxe

A sintaxe básica do Memcached stats slabs comando é como mostrado abaixo -

stats slabs

Exemplo

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 sizescomando fornece informações sobre os tamanhos e o número de itens de cada tamanho no cache. As informações são retornadas em duas colunas. A primeira coluna é o tamanho do item (arredondado para o limite de 32 bytes mais próximo) e a segunda coluna é a contagem do número de itens desse tamanho dentro do cache.

Sintaxe

A sintaxe básica do Memcached stats sizes comando é como mostrado abaixo -

stats sizes

Exemplo

stats sizes
STAT 96 1
END

As estatísticas de tamanho do item são úteis apenas para determinar os tamanhos dos objetos que você está armazenando. Como a alocação de memória real é relevante apenas em termos de tamanho do bloco e tamanho da página, a informação só é útil durante uma depuração cuidadosa ou sessão de diagnóstico.

Memcached flush_allcomando é usado para excluir todos os dados (pares de valores-chave) do servidor Memcached. Ele aceita um parâmetro opcional chamadotime isso define um tempo após o qual os dados do Memcached devem ser apagados.

Sintaxe

A sintaxe básica do Memcached flush_all comando é como mostrado abaixo -

flush_all [time] [noreply]

O comando acima sempre retorna OK.

Exemplo

No exemplo a seguir, armazenamos alguns dados no servidor Memcached e, em seguida, apagamos todos os dados.

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

Limpar dados usando aplicativo Java

Para limpar os dados de um servidor Memcached, você precisa usar o Memcached flush método.

Exemplo

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

Resultado

Ao compilar e executar o programa, você verá a seguinte saída -

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