Use o código e tenha 10% de desconto!

Armazenando dados com Redis

Rodrigo Lazoti
Capa

Redis

À minha amada esposa e querido filho.

Agradecimentos

"Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma — which is living with the results of other people's thinking. Don't let the noise of others' opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary."

Escrever um livro é sempre uma tarefa longa e difícil, pois temos que aplicar muito esforço e tempo. Por este motivo tenho muito a agradecer às pessoas que me ajudaram direta ou indiretamente ao longo dessa jornada.

Em primeiro lugar agradeço à minha esposa Andressa pelo seu apoio incondicional e pelo carinho durante as diversas horas que passei escrevendo o livro. Ao meu filho Rafael pela sua compreensão e paciência, à minha mãe e irmãos por todo o seu apoio.

Agradeço também a todo o pessoal da Casa do Código pela orientação e ajuda, principalmente ao Paulo Silveira e o Adriano Almeida por acreditar, apoiar e me acompanhar no decorrer do meu trabalho nesse livro.

E principalmente agradeço a você leitor por investir seu precioso tempo nesse livro.

Obrigado a todos vocês!

Sobre o autor

Brasileiro, nascido no estado de São Paulo.

Rodrigo Lazoti é bacharel em Sistemas de informação pela Faculdade Drummond e Pós-graduado em Engenharia de Software pela PUC-MG. Trabalha como desenvolvedor de software desde 2002 e desde então vem utilizando diversas linguagens de programação e diferentes tecnologias.

Sumário

  • 1 - Começando com o Redis
    • 1.1 - Instalando no Unix, Linux e Mac OS
    • 1.2 - Instalando no Windows
    • 1.3 - Iniciando o Redis
    • 1.4 - Olá Redis
    • 1.5 - Próximos passos
  • 2 - Conhecendo o Redis
    • 2.1 - O que o Redis não é
    • 2.2 - Indo além do CLI
    • 2.3 - Olá Redis em Java
    • 2.4 - Testando o Redis online
    • 2.5 - Recursos do livro
    • 2.6 - Próximos passos
  • 3 - Redis no mundo real — Parte 1
    • 3.1 - Cache de dados com Strings
    • 3.2 - Encontrando as chaves armazenadas
    • 3.3 - Utilizando hashes
    • 3.4 - Próximos passos
  • 4 - Redis no mundo real — Parte 2
    • 4.1 - Expirando chaves de forma automática
    • 4.2 - Estatísticas de páginas visitadas
    • 4.3 - Estatísticas de usuários únicos por data
    • 4.4 - Próximos passos
  • 5 - Redis no mundo real — Parte 3
    • 5.1 - Lista das últimas páginas visitadas
    • 5.2 - Criando uma fila de mensagens
    • 5.3 - Manipular relacionamento entre amigos e seus grupos
    • 5.4 - Próximos passos
  • 6 - Redis no mundo real — Parte 4
    • 6.1 - Armazenando as vitórias dos usuários em um jogo
    • 6.2 - Scores dos jogadores com Sorted Set
    • 6.3 - Identificando os tipos de cada chave
    • 6.4 - Próximos passos
  • 7 - O que mais o Redis pode fazer
    • 7.1 - Enviando mensagens com PUB-SUB
    • 7.2 - Enviando múltiplos comandos com Pipeline
    • 7.3 - Utilizando transações no Redis
    • 7.4 - Executando scripts em Lua
    • 7.5 - Próximos passos
  • 8 - Monitorando o Redis
    • 8.1 - Como monitorar comandos
    • 8.2 - Obtendo informações do servidor
    • 8.3 - Algumas dicas de uso
    • 8.4 - Próximos passos
  • 9 - Administrando o Redis
    • 9.1 - Utilizando um arquivo de configuração
    • 9.2 - Segurança
    • 9.3 - Persistência dos dados contidos em memória
    • 9.4 - Definindo o banco de dados
    • 9.5 - Próximos passos
  • 10 - Gerenciando várias instâncias do Redis
    • 10.1 - Replicação
    • 10.2 - Sentinel
    • 10.3 - Cluster
    • 10.4 - Próximos passos
  • 11 - Para saber mais
    Capítulo1

    Começando com o Redis

     

    Desde que comecei a estudar e trabalhar com desenvolvimento de software, sempre considerei que a forma mais fácil e rápida para aprender uma nova tecnologia é utilizando-a. Por este motivo, a intenção foi escrever um livro prático e nada mais justo do que começar demonstrando como instalar o Redis.

    Em geral a instalação do Redis é uma tarefa bem simples para quem utiliza sistemas operacionais baseados no Unix, porém, para quem utiliza Windows, esta tarefa pode não ser tão simples ou até mesmo recomendada.

    Este livro foi escrito utilizando a versão 2.8.x do Redis.

    1.1 - Instalando no Unix, Linux e Mac OS

    Para sistemas operacionais baseados no Unix, como Linux e Mac OS, a instalação pode ser feita a partir do código-fonte do Redis que está disponível em:

    http://redis.io/download

    Uma outra opção seria realizar a instalação por um gerenciador de pacotes, como o HomeBrew (http://brew.sh) do Mac OS ou o apt-get do Debian e seus derivados. Mas nos exemplos a seguir vou utilizar a instalação através do código-fonte, pois isso pode ser realizado facilmente por qualquer sistema operacional baseado no Unix.

    Veja a seguir como fazer a instalação a partir do código-fonte:

    wget http://download.redis.io/releases/redis-2.8.x.tar.gz
    tar zxvf redis-2.8.x.tar.gz
    cd redis-2.8.x
    make
    

    No bloco de comandos anterior, o download do Redis é feito utilizando o programa de linha de comando wget. O x é o número do release, lembre-se de substituí-lo. Assim que o download estiver concluído, o arquivo é descompactado com o comando tar na pasta redis-2.8.x e, após a sua descompactação, é necessário realizar a compilação do código-fonte do Redis utilizando o comando make. A compilação pode demorar um pouco para terminar, mas após o fim da execução desse comando, o Redis já esta pronto para o uso e os arquivos binários gerados estarão acessíveis através da pasta src.

    O programa wget não existe nativamente no Mac OS e para resolver isso podemos substituí-lo pelo programa curl, que consegue fazer o download de um arquivo pela linha de comando da seguinte forma:

    curl http://download.redis.io/releases/redis-2.8.x.tar.gz
       -o redis-2.8.x.tar.gz
    

    1.2 - Instalando no Windows

    O Redis não suporta oficialmente o sistema operacional Windows, mas é possível instalar uma versão experimental baseada na versão 2.6 do Redis, mantida pelo grupo Microsoft Open Tech. Por se tratar de uma versão experimental, é importante deixar claro que até o momento em que este livro foi escrito a sua instalação é recomendada apenas em ambiente de desenvolvimento.

    A versão mantida pelo Microsoft Open Tech pode ser obtida através do link https://github.com/MSOpenTech/redis mas, para simplificar, vamos realizar o download de um arquivo compactado do repositório do projeto através do link:

    https://github.com/MSOpenTech/redis/archive/2.6.zip

    Após o download do arquivo, vamos descompactá-lo na pasta redis-2.6, dentro da qual existe uma pasta bin. Esta última contém dois arquivos no formato zip: o arquivo redisbin.zip e o redisbin64.zip, que contém os executáveis para a plataforma 32 e 64 bits do Windows, respectivamente. Depois de selecionado o arquivo correspondente à sua plataforma, basta descompactá-lo.

    1.3 - Iniciando o Redis

    Iniciar o Redis utilizando sua configuração padrão é uma tarefa extremamente simples e rápida. Para os sistemas operacionais Unix, Linux e Mac OS, acesse a pasta src, que contém os arquivos binários gerados pelo comando make, e execute:

    ./redis-server
    

    Para o sistema operacional Windows, execute o arquivo redis-server.exe que foi extraído do arquivo redisbin.zip ou redisbin64.zip conforme a plataforma escolhida.

    Independente do sistema operacional utilizado, o Redis irá exibir uma saída bem parecida com a demonstrada a seguir:

    Saída do servidor Redis.
    Figura 1.1: Saída do servidor Redis.


    Não se preocupe com as mensagens geradas pelo Redis nesse momento, o importante agora é que o servidor do Redis está funcionando de forma adequada.

    1.4 - Olá Redis

    Agora que já temos um servidor do Redis sendo executado, chegou o momento de realizarmos o famoso "Olá Mundo", que neste exemplo será um "ola redis!". Novamente, não se preocupe com os comandos utilizados a seguir, nem mesmo com os conceitos do Redis, pois tudo isso será explicado no decorrer do livro.

    Precisamos utilizar uma aplicação cliente que consiga conectar a esse servidor do Redis. A distribuição do Redis já nos fornece um cliente de conexão, sendo que esse cliente é a forma mais simples e direta de interagir com o servidor do Redis. Ele é conhecido como CLI, que na língua inglesa significa command-line interface. A partir de agora, sempre que você encontrar a sigla CLI, lembre-se que é uma referência ao cliente nativo para linha de comando do Redis.

    O CLI encontra-se na mesma pasta onde o comando redis-server foi executado. Ele é um arquivo chamado redis-cli nas plataformas baseadas no Unix e redis-cli.exe na plataforma Windows.

    Ao executar o CLI, será apresentada a seguinte interface:

    rodrigolazoti@MacBook-Pro:~/redis-2.8.x/src => ./redis-cli
    redis 127.0.0.1:6379>
    

    Agora chegou o momento de utilizarmos o Redis. Vamos iniciar usando o comando ECHO, que serve apenas para retornar uma mensagem enviada para ele através desse comando. Veja a seguir como fazer isso:

    redis 127.0.0.1:6379> ECHO "ola redis!"
    "ola redis!"
    

    Simples, não? O comando ECHO apenas apresentou a mensagem que passamos para ele como parâmetro. Agora vamos fazer algo um pouco mais prático. Imagine que tenhamos que armazenar e exibir o nome do ultimo usuário logado em um sistema em tempo real. Parece uma tarefa complicada, mas esse é o tipo de tarefa em que o uso do Redis se encaixa perfeitamente. Para realizar isso, vou utilizar o comando SET, que recebe dois argumentos: uma chave e um valor. Veja o seguinte exemplo:

    redis 127.0.0.1:6379> SET ultimo_usuario_logado "Bruce Banner"
    OK
    

    No comando anterior, a chave usada foi ultimo_usuario_logado, cujo valor definimos como "Bruce Banner". Repare que, ao executar o comando, o CLI retornou o status "OK", informando que o comando foi executado corretamente. Agora vamos resgatar o nome do último usuário logado para que possamos apresentá-lo no sistema. Para ler o valor armazenado nessa chave, utilizaremos o comando GET conforme o exemplo a seguir:

    redis 127.0.0.1:6379> GET ultimo_usuario_logado
    "Bruce Banner"
    

    Para um último exemplo, imagine que o usuário acabou de sair do sistema e temos que removê-lo do Redis. Para isso, vamos utilizar o comando DEL que serve para remover um valor de acordo com a chave que ele recebe como parâmetro. Vamos executar o comando da seguinte forma:

    redis 127.0.0.1:6379> DEL ultimo_usuario_logado
    (integer) 1
    

    Dessa vez, o CLI nos retornou o número 1, que se refere à quantidade de chaves que foram removidas do Redis. Caso nenhuma chave tivesse sido removida, o CLI teria retornado o valor 0.

    Parabéns, você acabou de ter seu primeiro contato com o Redis e de entender como ele utiliza o conceito de armazenamento de dados no formato de chave-valor. No decorrer do livro, irei utilizar problemas que enfrentamos no dia a dia de desenvolvimento de software para exemplificar os recursos do Redis abordados aqui.

    1.5 - Próximos passos

    Agora já temos nosso servidor instalado. Aproveitamos e testamos a configuração, adicionando usuários ao banco de dados através do cliente da linha de comando. Claro que, quando estivermos trabalhando com uma aplicação, implementada em alguma linguagem de programação, vamos precisar fazer toda essa comunicação com o banco através da linguagem usada.

    No próximo capítulo, vamos aprender como fazer isso através do Java e começar a trabalhar com o Redis através da linguagem de programação, para conseguirmos criar programas interessantes.

    Dados do produto

    Número de páginas:
    166
    ISBN:
    978-85-66250-39-8
    Data publicação:
    05/2014

    Compartilhe!

    Compartilhe no Facebook Compartilhe no Twitter