O documento apresenta Redis, um banco de dados chave-valor em memória, e discute como ele pode ser usado para cache, gerenciamento de sessão, filas e outras aplicações. Ele explica como instalar e usar Redis, seus tipos de dados e comandos, e dá exemplos de como empresas grandes como Twitter e GitHub usam Redis em produção.
1. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
REDIS PARA INICIANTES
Wednesday, August 6, 14
2. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
OBJETIVO DE HOJE
Mostrar em 15 minutos o que você pode fazer com
o REDIS e porque ele vai ser imprescindível a partir
de hoje nos seus projetos.
Wednesday, August 6, 14
3. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
QUEM USA ESTE TAL DE
REDIS?
Será mais um projeto obscuro do mundo do
Software Livre utilizado por meia duzia de geeks?
Wednesday, August 6, 14
5. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Como instalar e
rodar o REDIS?
Site Oficial: http://redis.io/
$ wget http://download.redis.io/releases/redis-2.8.13.tar.gz
$ tar xzf redis-2.8.13.tar.gz
$ cd redis-2.8.13
$ make
Servidor
$ src/redis-server
Cliente
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
Wednesday, August 6, 14
6. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
REmote DIctionary
Server
•Sistema de par chave / valor
•Dados em memória
•Arquitetura Cliente / Servidor
•Escrito em C
•Open Source
•https://github.com/antirez/redis
Wednesday, August 6, 14
7. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Chave
string
Ex: 5, _key, key
Valor
string
int
float
list
set
sorted
set
hash
Wednesday, August 6, 14
8. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
string “um texto”
int 4
float 2,3
list [1, 2, “a”, 2, “texto”]
set (1, 2, “a”, “texto”)
sortedset [(1, 2), (2, 4), (“a”, 5), (“texto”, 20)]
nome Miguel
idade 34
sexo Masculino
hash
Wednesday, August 6, 14
9. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Além de gravar e ler valores, é
possível manipular os dados
internamente.
Exemplos:
•modificar string
•incrementar / decrementar
números
•operações binárias
•operações com estruturas de
dados
http://redis.io/commands/
Wednesday, August 6, 14
10. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Outros diferenciais
•Persistência em disco (failback)
•Pipelining
•Transações
•Replicação Master / Slave
•Scripting com Lua
•Clustering (em versão beta)
Wednesday, August 6, 14
11. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
LEGAL, MAS COMO USO ISTO
NO MEU SISTEMA?
Wednesday, August 6, 14
12. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Cache
REDIS pode ser usado como um
cache de dados e conteúdo, no
estilo Memcached.
Wednesday, August 6, 14
13. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Gerenciamento de
sessão
Um dicionário (hash) armazena os
vários campos da sessão, e a chave
de acesso é o ID da sessão.
A função EXPIRE permite que sessões
sejam automaticamente invalidadas
após um período (timeout).
Wednesday, August 6, 14
14. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Tabela de
classificação
Uso de conjunto ordenado (SORTED
SET) permite manter, atualizar e
consultar tabelas de classificação em
tempo real. Muito útil para jogos.
Wednesday, August 6, 14
15. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Filas
(mensagens, task, ...)
Filas são um elemento constante em
qualquer programa.
A primitiva LIST oferece todas as
funcionalidades, incluindo operações
bloqueantes, úteis para implementação
de filas de mensagens e tarefas.
Wednesday, August 6, 14
16. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Base de dados
Bibliotecas de ODM (Object Data
Mapper) implementam funcionalidades
de mapemento de objetos em
“tabelas”, indexação, busca típicas de
SGBD.
Importante saber das limitações e usar
com parcimônia.
https://github.com/mgalves/redisco
Wednesday, August 6, 14
17. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Pub / Sub
Implementação pronta de PubSubHub:
consumidores podem assinar canais de
conteúdo, e produtores podem
publicar conteúdos em canais.
Wednesday, August 6, 14
18. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Invente a sua...
Uma combinação apropriada de nome
de chave e de estruturas de dados
permitem uma infinidade de
possibilidades.
Invente a sua!
Wednesday, August 6, 14
19. Miguel Galves | @mgalves Redis para iniciantes | TDC214
E COMO REDIS É USADO
NO “MUNDO REAL” ?
Como foi mostrado anteriormente,
empresas famosas usam REDIS.
Vamos dar uma espiadinha?
Wednesday, August 6, 14
20. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
REDIS é utilizado como cache web
560MM de pageviews / mês
54 site no mundo
40MM de respostas
25 servidores
Wednesday, August 6, 14
21. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
REDIS utilizado para armazenar a
homeline dos usuários, em listas
com tamanho máximo de 800
elementos.
30 bilhões de updates por dia
400.000.000 de tweets por dia
5000 tweets por segundo
Wednesday, August 6, 14
22. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
Gestão de configurações de
deploy.
Roteamento de requests:
mapeamento de servidores
associados a usuários.
3,5 milhões de usuários
6 milhões de repositórios
Wednesday, August 6, 14
23. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
REDIS utilizado como indice
complementar ao MySQL,
tornando buscas mais rápidas e
reduzindo a carga sobre base de
dados.
Além disso, usa sistema de
PubSub para notificações de
eventos em tempo real.
1.6 milhões de uploads por dia
92 milhões de usuários
Wednesday, August 6, 14
24. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
REDIS é utilizado para
armazenamento do grafo social
de usuários.
70MM de usuários
53MM de acessos únicos / mês
Média de 67 followers por usuário
Wednesday, August 6, 14
25. Miguel Galves | @mgalves Redis para iniciantes | TDC214
E COM QUEM REDIS CONVERSA?
Consigo integrar REDIS no meu projeto?
Eu uso a linguagem X...
Wednesday, August 6, 14
26. Todas esta linguagens possuem bibliotecas e drivers
Thursday, July 24, 14
Todas estas linguagem possuem libs e drivers para REDIS
Wednesday, August 6, 14
27. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
EM RESUMO
Ferramenta madura e com comunidade ativa
Testada e aprovada em grande escala no mundo real
Rápida, eficiente e extremamente versátil
Simplifica seu stack, substituindo uma série de outras
ferramentas
Wednesday, August 6, 14
28. Miguel Galves | @mgalves Redis para iniciantes | TDC2014
obrigado ;)
@mgalves
mgalves@gmail.com
http://github.com/mgalves/
http://br.linkedin.com/in/mgalves
Me livrei da minha conta no facebook.
Wednesday, August 6, 14