Isso significa que em geral uma requisição feita por um cliente ao servidor é seguida das seguintes etapas:
O cliente envia um comando ao servidor e fica aguardando uma res-
posta do servidor (geralmente bloqueando a conexão) através de uma
conexão estabelecida via socket;
O servidor processa o comando e envia a resposta de volta ao cliente.
Figura 2.1:
Processo de envio de comando e recebimento da resposta
2.1
O que o Redis não é
Assim como é muito importante entender o que é o Redis e o que podemos
fazer com ele para podermos utilizá-lo de forma correta, é essencial entender também o que o Redis não é e o que não é possível. Veja a seguir uma pequena lista de itens que o Redis não é ou não faz:
8
Casa do Código
Capítulo 2. Conhecendo o Redis
Não é um banco de dados relacional como o MySQL ou Oracle;
Não é um banco de dados orientado a documentos como o MongoDB;
Não é um banco de dados que você deveria usar para armazenar todos
os seus dados;
Não possui suporte oficial ao Windows;
Não utiliza o protocolo HTTP.
2.2
Indo além do CLI
O CLI (a interface de linha de comando) é uma forma rápida e fácil de exe-
cutar comandos no Redis mas, na prática, a comunicação com o Redis é feita
muitas vezes através de uma aplicação, e não utilizando o CLI diretamente.
Para resolver isso, o Redis possui diversos clientes para várias linguagens de programação que vão desde Java até Smalltalk e que funcionam de forma síncrona ou assíncrona. Para conferir todos os clientes disponíveis para cada
linguagem de programação, acesse o link:
http://redis.io/clients
Essa página contém todos os clientes para Redis, suas respectivas descri-
ções e endereços, mas um ponto importante é que também é possível ver uma
classificação de qual cliente é mais recomendado e mais ativo para cada linguagem de programação.
No decorrer do livro, irei utilizar alguns exemplos em CLI e outros em
Java utilizando a versão 2.4.2 do cliente Jedis que está disponível através do link:
https://github.com/xetorthio/jedis
Saiba que tudo que for feito utilizando um cliente Java ou CLI diretamente
pode ser feito com qualquer outro cliente de Redis, independente da lingua-
gem de programação. O código será muito análogo, seja em Ruby, Python ou
sua linguagem preferida! O que importa realmente são os conceitos.
O código-fonte em Java dos exemplos do livro serão feitos utilizando o
Maven. Para quem preferir utilizá-lo, a dependência do Jedis pode ser declarada da seguinte forma:
9
2.3. Olá Redis em Java
Casa do Código
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.4.2</version>
</dependency>
2.3
Olá Redis em Java
Para entendermos como usar o Redis através de uma aplicação, vamos realizar o mesmo exemplo feito no capítulo 1, mas agora usando um cliente em Java
chamado Jedis. Vamos começar com o comando ECHO:
Jedis jedis = new Jedis("localhost");
String resultado = jedis.echo("ola redis!");
System.out.println(resultado);
Uma instância da classe Jedis é tudo que precisamos para enviar co-
mandos para o Redis através de uma aplicação Java. No exemplo anterior,
ao instanciar a classe Jedis, passamos como parâmetro ao construtor o local onde o Redis está sendo executado que no nosso caso é na máquina local
(localhost). A biblioteca Jedis utiliza a mesma nomenclatura dos comandos
disponíveis pelo CLI. Ao executar o método echo, a instância do Jedis re-
torna o mesmo resultado de quando executamos o comando ECHO via CLI,
conforme o bloco a seguir:
ola redis!
Agora vamos armazenar uma informação utilizando o comando SET
conforme o código a seguir:
Jedis jedis = new Jedis("localhost");
String resultado = jedis.set("ultimo_usuario_logado",
"Tony Stark");
System.out.println(resultado);
Caso tudo ocorra corretamente, o valor impresso pela variável
resultado será OK. Repare que, embora estejamos enviando coman-
dos para o Redis através de uma aplicação Java, o resultado é o mesmo que
recebemos quando utilizamos o CLI.
10
Casa do Código
Capítulo 2. Conhecendo o Redis
Vamos executar o comando GET através do Jedis para confirmar que o va-
lor correto da chave ultimo_usuario_logado está armazenado no Redis.
Veja como fazer isso com o seguinte código:
Jedis jedis = new Jedis("localhost");
String valor = jedis.get("ultimo_usuario_logado");
System.out.println(valor);
O resultado do código anterior é:
Tony Stark
Repare que executar comandos no Redis via Java usando o cliente Jedis
é uma tarefa simples e bem próxima da forma como é feito pelo CLI. Para
encerrar este primeiro contato com o Jedis, vamos remover a chave que con-
sultamos no exemplo anterior:
Jedis jedis = new Jedis("localhost");
Long resultado = jedis.del("ultimo_usuario_logado");
System.out.println(resultado);
Assim como o CLI, o método del retorna o número 1, que refere-se à
quantidade de chaves que foram removidas do Redis. Caso nenhuma chave
tivesse sido removida o método teria retornado o valor 0.
2.4
Testando o Redis online