Upload
allisson-azevedo
View
3.948
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Otimizando sites com o NoSQL Redis
Allisson Azevedo – V Ensolallisson arroba gmail.com
twitter.com/allissonslideshare.net/allisson
Allisson Azevedo
➔ Graduação no curso de Licenciatura em Computação – UEPB
➔ Desenvolvedor web➔ Django|Tornado|Rails|NodeJS➔ MySQL|PostgreSQL➔ MongoDB|Redis
➔ Arquiteturas escaláveis
Redis
➔ Código Aberto – Licença BSD➔ Salvatore Sanfilippo (antirez) (2009)➔ 2.2.11➔ http://github.com/antirez/redis➔ Escrito em C (padrão C99)➔ http://redis.io/
➔ Banco de dados chave-valor avançado➔ Dados em memória
➔ http://www.infoq.com/news/2008/06/ram-is-disk
http://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf
Redis
➔ Persistência em disco➔ Replicação mestre-escravo➔ Cluster (redis 3.0?)
Instalação
➔ Dependências➔ sudo apt-get install build-essential➔ yum install gcc make
➔ tar xvzf redis-2.2.11.tar.gz➔ cd redis-2.2.11/➔ make➔ make test (opcional, necessita do tcl8.5
instalado)➔ src/redis-server
Persistência
➔ Snapshotting➔ Padrão➔ Cópia dos dados em disco de forma periódica➔ save x y: Depois de x segundos, salve se ao
menos y chaves forem modificadas➔ save 900 1
➔ Como a cópia é periódica, dados podem ser perdidos durante um crash
Persistência
➔ Append-only file➔ Desde a versão 1.1➔ Evita possíveis perdas de dados do
snapshotting➔ BGREWRITEAOF
Databases
➔ Suporte a múltiplos databases➔ 0 – 15➔ 0 é o padrão
Estruturas de dados
➔ Strings➔ Qualquer tipo de dado, inclusive binários
Estruturas de dados
➔ Lists➔ Uma lista de strings➔ Acesso rápido nas pontas➔ Não tão rápido no acesso aleatório
Estruturas de dados
➔ Sets➔ Uma coleção de strings não ordenadas➔ Não permite elementos repetidos➔ Permite operações de união, diferença e
intercessão
Estruturas de dados
➔ Sorted Sets➔ Sets ordenados por um score
Estruturas de dados
➔ Hashes➔ Permite armazenar vários valores em uma
chave
Usos
➔ Task/Job Queues➔ Resque (Ruby)
– http://github.com/blog/542-introducing-resque➔ Celery (Python)
– http://celeryproject.org/
Usos
➔ Estatísticas de downloads
Usos
➔ Limitar uso de api
Usos
➔ Banners aleatórios
Usos
➔ Categorias/Tags
Usos
➔ Categorias/Tags➔ Artigos relacionados
➔ Tag1 AND Tag2 SINTER→➔ Tag1 OR Tag2 SUNION→
Usos
➔ Session store➔ Django-redis-session (Django)
– http://bitbucket.org/dpaccoud/django-redis-sessions/overview
➔ Redis-session-store (Rails)– http://github.com/mattmatt/redis-session-store
Usos
➔ Feed/Timeline
Usos
➔ Sugestões de amigos
Usos
➔ Wiki locking
Dúvidas?