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