Memcached - Comando CAS
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