Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Otimizando sites com o nosql redis

Otimizando sites com o nosql redis

Palestra ministrada no V Ensol

13991d197c3eb0f71b802337d5eb2719?s=128

Allisson Azevedo

November 02, 2011
Tweet

Transcript

  1. Otimizando sites com o NoSQL Redis Allisson Azevedo – V

    Ensol allisson arroba gmail.com twitter.com/allisson slideshare.net/allisson
  2. 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
  3. 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
  4. http://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf

  5. Redis ➔ Persistência em disco ➔ Replicação mestre-escravo ➔ Cluster

    (redis 3.0?)
  6. 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
  7. 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
  8. None
  9. Persistência ➔ Append-only file ➔ Desde a versão 1.1 ➔

    Evita possíveis perdas de dados do snapshotting ➔ BGREWRITEAOF
  10. None
  11. Databases ➔ Suporte a múltiplos databases ➔ 0 – 15

    ➔ 0 é o padrão
  12. None
  13. Estruturas de dados ➔ Strings ➔ Qualquer tipo de dado,

    inclusive binários
  14. None
  15. Estruturas de dados ➔ Lists ➔ Uma lista de strings

    ➔ Acesso rápido nas pontas ➔ Não tão rápido no acesso aleatório
  16. None
  17. None
  18. None
  19. 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
  20. None
  21. None
  22. None
  23. Estruturas de dados ➔ Sorted Sets ➔ Sets ordenados por

    um score
  24. None
  25. None
  26. None
  27. None
  28. Estruturas de dados ➔ Hashes ➔ Permite armazenar vários valores

    em uma chave
  29. None
  30. Usos ➔ Task/Job Queues ➔ Resque (Ruby) – http://github.com/blog/542-introducing-resque ➔

    Celery (Python) – http://celeryproject.org/
  31. Usos ➔ Estatísticas de downloads

  32. None
  33. Usos ➔ Limitar uso de api

  34. None
  35. Usos ➔ Banners aleatórios

  36. None
  37. Usos ➔ Categorias/Tags

  38. None
  39. Usos ➔ Categorias/Tags ➔ Artigos relacionados ➔ Tag1 AND Tag2

    SINTER → ➔ Tag1 OR Tag2 SUNION →
  40. None
  41. 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
  42. Usos ➔ Feed/Timeline

  43. None
  44. Usos ➔ Sugestões de amigos

  45. None
  46. None
  47. Usos ➔ Wiki locking

  48. None
  49. Dúvidas?