49
Otimizando sites com o NoSQL Redis Allisson Azevedo – V Ensol allisson arroba gmail.com twitter.com/allisson slideshare.net/allisson

Otimizando sites com o nosql redis

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Otimizando sites com o nosql redis

Otimizando sites com o NoSQL Redis

Allisson Azevedo – V Ensolallisson arroba gmail.com

twitter.com/allissonslideshare.net/allisson

Page 2: Otimizando sites com o nosql redis

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

Page 3: Otimizando sites com o nosql redis

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

Page 4: Otimizando sites com o nosql redis

http://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf

Page 5: Otimizando sites com o nosql redis

Redis

➔ Persistência em disco➔ Replicação mestre-escravo➔ Cluster (redis 3.0?)

Page 6: Otimizando sites com o nosql redis

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

Page 7: Otimizando sites com o nosql redis

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

Page 8: Otimizando sites com o nosql redis
Page 9: Otimizando sites com o nosql redis

Persistência

➔ Append-only file➔ Desde a versão 1.1➔ Evita possíveis perdas de dados do

snapshotting➔ BGREWRITEAOF

Page 10: Otimizando sites com o nosql redis
Page 11: Otimizando sites com o nosql redis

Databases

➔ Suporte a múltiplos databases➔ 0 – 15➔ 0 é o padrão

Page 12: Otimizando sites com o nosql redis
Page 13: Otimizando sites com o nosql redis

Estruturas de dados

➔ Strings➔ Qualquer tipo de dado, inclusive binários

Page 14: Otimizando sites com o nosql redis
Page 15: Otimizando sites com o nosql redis

Estruturas de dados

➔ Lists➔ Uma lista de strings➔ Acesso rápido nas pontas➔ Não tão rápido no acesso aleatório

Page 16: Otimizando sites com o nosql redis
Page 17: Otimizando sites com o nosql redis
Page 18: Otimizando sites com o nosql redis
Page 19: Otimizando sites com o nosql redis

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

Page 20: Otimizando sites com o nosql redis
Page 21: Otimizando sites com o nosql redis
Page 22: Otimizando sites com o nosql redis
Page 23: Otimizando sites com o nosql redis

Estruturas de dados

➔ Sorted Sets➔ Sets ordenados por um score

Page 24: Otimizando sites com o nosql redis
Page 25: Otimizando sites com o nosql redis
Page 26: Otimizando sites com o nosql redis
Page 27: Otimizando sites com o nosql redis
Page 28: Otimizando sites com o nosql redis

Estruturas de dados

➔ Hashes➔ Permite armazenar vários valores em uma

chave

Page 29: Otimizando sites com o nosql redis
Page 30: Otimizando sites com o nosql redis

Usos

➔ Task/Job Queues➔ Resque (Ruby)

– http://github.com/blog/542-introducing-resque➔ Celery (Python)

– http://celeryproject.org/

Page 31: Otimizando sites com o nosql redis

Usos

➔ Estatísticas de downloads

Page 32: Otimizando sites com o nosql redis
Page 33: Otimizando sites com o nosql redis

Usos

➔ Limitar uso de api

Page 34: Otimizando sites com o nosql redis
Page 35: Otimizando sites com o nosql redis

Usos

➔ Banners aleatórios

Page 36: Otimizando sites com o nosql redis
Page 37: Otimizando sites com o nosql redis

Usos

➔ Categorias/Tags

Page 38: Otimizando sites com o nosql redis
Page 39: Otimizando sites com o nosql redis

Usos

➔ Categorias/Tags➔ Artigos relacionados

➔ Tag1 AND Tag2 SINTER→➔ Tag1 OR Tag2 SUNION→

Page 40: Otimizando sites com o nosql redis
Page 41: Otimizando sites com o nosql redis

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

Page 42: Otimizando sites com o nosql redis

Usos

➔ Feed/Timeline

Page 43: Otimizando sites com o nosql redis
Page 44: Otimizando sites com o nosql redis

Usos

➔ Sugestões de amigos

Page 45: Otimizando sites com o nosql redis
Page 46: Otimizando sites com o nosql redis
Page 47: Otimizando sites com o nosql redis

Usos

➔ Wiki locking

Page 48: Otimizando sites com o nosql redis
Page 49: Otimizando sites com o nosql redis

Dúvidas?