Casa do Código
À minha amada esposa e querido filho.
i
Casa do Código
Agradecimentos
Your time is limited, so dont waste it living someone elses life. Dont be trapped by dogma which is living with the results of other peoples thinking.
Dont 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.
Steve Jobs
Escrever um livro é sempre uma tarefa longa e difícil, pois temos que apli-
car 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 in-
condicional 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!
iii
Casa do Código
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. Tra-
balha como desenvolvedor de software desde 2002 e desde então vem utili-
zando diversas linguagens de programação e diferentes tecnologias.
v
Casa do Código
Sumário
Sumário
1
Começando com o Redis
1
1.1
Instalando no Unix, Linux e Mac OS . . . . . . . . . . . . . .
1
1.2
Instalando no Windows . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Iniciando o Redis . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.4
Olá Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.5
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2
Conhecendo o Redis
7
2.1
O que o Redis não é . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2
Indo além do CLI . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3
Olá Redis em Java . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.4
Testando o Redis online . . . . . . . . . . . . . . . . . . . . . .
11
2.5
Recursos do livro
. . . . . . . . . . . . . . . . . . . . . . . . .
12
2.6
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3
Redis no mundo real Parte 1
15
3.1
Cache de dados com Strings . . . . . . . . . . . . . . . . . . .
15
3.2
Encontrando as chaves armazenadas . . . . . . . . . . . . . .
18
3.3
Utilizando hashes . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.4
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4
Redis no mundo real Parte 2
29
4.1
Expirando chaves de forma automática . . . . . . . . . . . . .
29
4.2
Estatísticas de páginas visitadas . . . . . . . . . . . . . . . . .
32
vii
Sumário
Casa do Código
4.3
Estatísticas de usuários únicos por data . . . . . . . . . . . . .
37
4.4
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5
Redis no mundo real Parte 3
49
5.1
Lista das últimas páginas visitadas . . . . . . . . . . . . . . . .
49
5.2
Criando uma fila de mensagens . . . . . . . . . . . . . . . . .
54
5.3
Manipular relacionamento entre amigos e seus grupos . . . .
63
5.4
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
77
6
Redis no mundo real Parte 4
79
6.1
Armazenando
as vitórias dos usuários em um jogo . . . . . .
79
6.2
Scores dos jogadores com Sorted Set . . . . . . . . . . . . . .
83
6.3
Identificando os tipos de cada chave
. . . . . . . . . . . . . .
92
6.4
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
93
7
O que mais o Redis pode fazer
95
7.1
Enviando mensagens com PUB-SUB . . . . . . . . . . . . . .
95
7.2
Enviando múltiplos comandos com Pipeline . . . . . . . . . .
103
7.3
Utilizando transações no Redis . . . . . . . . . . . . . . . . .
106
7.4
Executando scripts em Lua . . . . . . . . . . . . . . . . . . . .
109
7.5
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
112
8
Monitorando o Redis
113
8.1
Como monitorar comandos . . . . . . . . . . . . . . . . . . .
113
8.2
Obtendo informações do servidor . . . . . . . . . . . . . . . .
116
8.3
Algumas dicas de uso . . . . . . . . . . . . . . . . . . . . . . .
122
8.4
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .
125
9
Administrando o Redis
127
9.1
Utilizando um arquivo de configuração . . . . . . . . . . . . .
127
9.2
Segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
128
9.3
Persistência dos dados contidos em memória . . . . . . . . .
130
9.4
Definindo o banco de dados . . . . . . . . . . . . . . . . . . .
132
9.5
Próximos passos . . . . . . . . . . . . . . . . . . . . . . . . . .