Redis
                                    What? Why? When? How?



segunda-feira, 27 de agosto de 12
About

                   • Software Engineer: Dafiti
                   • Developer: About 10
                   • php.net, MeeGo, phpsp, fedora project,
                           NoSQL BR, *
                   • Zend Certified Engineer, Husband and
                           Daddy


segunda-feira, 27 de agosto de 12
Redis



                   • Memcached




segunda-feira, 27 de agosto de 12
Obrigado




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?
                • Remote Dictionary Server




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?
                • Remote Dictionary Server
                • Armazenamento chave-valor




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?
                • Remote Dictionary Server
                • Armazenamento chave-valor
                  • ... lista e executa operações




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?
                • Remote Dictionary Server
                • Armazenamento chave-valor
                  • ... lista e executa operações
                • Um servidor de estrutura de dados




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?
                • Remote Dictionary Server
                • Armazenamento chave-valor
                  • ... lista e executa operações
                • Um servidor de estrutura de dados
                  • ... tem pub/sub e notificações




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?
                • Remote Dictionary Server
                • Armazenamento chave-valor
                  • ... lista e executa operações
                • Um servidor de estrutura de dados
                  • ... tem pub/sub e notificações
                • Um bus de evento sem bloqueio




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Dafuck Redis?
                • Remote Dictionary Server
                • Armazenamento chave-valor
                  • ... lista e executa operações
                • Um servidor de estrutura de dados
                  • ... tem pub/sub e notificações
                • Um bus de evento sem bloqueio
                • Uma memória compartilhada acessível via
                        rede



segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Um canivete suíço




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Seja o que for...
                   • Mothafuckamente rápido!
                          • Non-blocking I/O, um único segmento
                          • 100,000+ escrita/leitura por segundo
                   • Pequeno: ~16,000 linhas de código C
                   • Escala para “baixo”: Amigável até mesmo com um
                           simples VPS
                   • Faz um novo tipo de recurso - em particular para
                           escritas pesadas - viável para pequenas aplicações
                   • Complementa sua camada de armazenamento

segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Breve histórico



                   • Breve mesmo...




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Breve histórico

                   • Criado por Salvatore Sanfilippo
                           ( antirez )
                   • Primeiro release: Março/2009
                   • “Adquirido” pela VMWare em Março
                           de 2010

                   • Open Source ( BSD )


segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Agenda!

              • Como funciona
              • Tipos de dados
              • Utilidade
              • PHP
              • Úteis


segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Inicio de tudo!
              $ git clone git://github.com/antirez/redis

              $ cd redis

              $ make

              $ ./redis-server




segunda-feira, 27 de agosto de 12
t
             Wha




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Chaves

              • Chaves não devem conter espaços em
                       branco!
                   • ( essa restrição foi removida na versão 1.2)
              • Chaves curtas performam melhor
              • Convenção comum: tipo-de-objeto:id:campo
                   • user:23:username = manolo
              • SHA1(data) Pode ser uma chave útil também

segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Tipos de dados




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Tipos de dados
                   • Binary-safe strings ( até 10GB )
                          • listas
                          • conjuntos
                   • Conjuntos sortidos
                          • (Cada chave possuí uma pontuação)
                   • hashes
                   • Canais pub/sub

segunda-feira, 27 de agosto de 12
t
             Wha




     Os tipos de dados propriamente ditos!!!




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Strings

                       SET name Kinn
                       SET age 23
                       MGET name age
                       > Kinn
                       >23
                       GETSET name Kinncj
                       > Kinn



segunda-feira, 27 de agosto de 12
Wha
                   t
                                     Strings


                       SETEX age 3 20
                       GET age
                       > 20
                       // .. 3 segundos após
                       GET age
                       > null




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Inteiros


                       INCR count
                       >1
                       INCR count
                       >2
                       INCRBY count 3
                       >5




segunda-feira, 27 de agosto de 12
Wha
                   t
                                           Hashes

                       HMSET user name Kinn email kinncj@php.net

                       HGET user email
                       > kinncj@php.net

                       HKEYS user
                       > name
                       > email

                       HGETALL user
                       > name
                       > Kinn
                       > email
                       > kinncj@php.net




segunda-feira, 27 de agosto de 12
Wha
                   t
                                             Listas

                       RPUSH admins Kinn
                       >1
                       RPUSH admins Manolo
                       >2
                       LINDEX admins 0
                       > Kinn
                       LLEN admins
                       >2
                       RPOP admins
                       > Manolo




segunda-feira, 27 de agosto de 12
Wha
                   t
                                       Conjuntos

                       SADD page:3:visitors 134
                       >1
                       SADD page:3:visitors 253
                       >1
                       SADD page:3:visitors 253
                       >0
                       SCARD page:3:visitors
                       >2
                       SMEMBERS page:3:visitors
                       > 134
                       > 253
                       SISMEMBER page:3:visitors 349
                       >0




segunda-feira, 27 de agosto de 12
Wha
                   t
                                         Conjuntos


                       SADD page:6:visitors 253
                       SADD page:6:visitors 923
                       SADD page:6:visitors 13
                       SINTER page:3:visitors page:6:visitors
                       > 253




segunda-feira, 27 de agosto de 12
Wha
                   t
                                    Conjuntos sortidos


                       ZADD highscores 2930 Kinn
                       ZADD highscores 1500 Manolo
                       ZREVRANGE highscores 0 10 WITHSCORES
                       > Kinn
                       > 2930
                       > Manolo
                       > 1500




segunda-feira, 27 de agosto de 12
Wha
                   t
                                                Exemplo


                       Listas
                         array(‘foo’, ‘bar’);

                       Conjuntos
                         suffle(array(‘foo’, ‘bar’));

                       Conjuntos sortidos
                         ksort(array(3 => ‘foo’, 1 => ‘bar’));




segunda-feira, 27 de agosto de 12
Why




                                      Os tipos básicos de cada
                                    linguagem existem no redis




segunda-feira, 27 de agosto de 12
Why




                                    Processe dados no redis ao
                                          invés do PHP




segunda-feira, 27 de agosto de 12
Why




                                    “SQL” no redis




segunda-feira, 27 de agosto de 12
Why
                                    SORT - SQL em seu
                                         NoSQL


                     SORT chave
                     SORT chave LIMIT 0 10 DESC
                     SORT chave ALPHA
                     SORT page:6:visitors BY user_*->rank
                     GET user_* DESC




segunda-feira, 27 de agosto de 12
Why
                                    Pub/Sub




segunda-feira, 27 de agosto de 12
Why
                                    Pub/Sub



                • Redis faz BroadCast!!!!!!




segunda-feira, 27 de agosto de 12
Why
                                      Pub/Sub



                     SUBSCRIBE mensagem
                     SUBSCRIBE chan1 chan2 chan3
                     PUBLISH mensagem “Ola Mundo”
                     PSUBSCRIBE chat.*




segunda-feira, 27 de agosto de 12
Why
                                    Goodies




segunda-feira, 27 de agosto de 12
Why
                                    Goodies



                • Replicação Master/Slave
                • Transações: MULTI / EXEC / DISCARD




segunda-feira, 27 de agosto de 12
Why
                                    Future Goodies




segunda-feira, 27 de agosto de 12
Why
                                    Future Goodies



                • Lua Scripting: EVAL




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster



                • Redis Cluster ( Tão atrasado quanto o
                        PHP 6 )




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster

                                 Velocidade
                                Redis é rápido
                    É muito improvável que CPU seja gargalo




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster


                                    Velocidade




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster


                                    Redis é rápido




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster


                   É muito improvável que CPU seja gargalo




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster


                       O que você faz quando está sem RAM?




segunda-feira, 27 de agosto de 12
Why
                 Future Goodies : Cluster

                              Esperar pelo cluster Redis?
                         Se você puder... o Cluster é parece ser
                                          ótimo




segunda-feira, 27 de agosto de 12
Why
                                        Goodie!


                                    Armazena em memória.
                                      Backup em disco.




segunda-feira, 27 de agosto de 12
Whe
                   n
                                          2 centavos


                                         Armazene em disco.
                                    Carregue hot-data na memória.




segunda-feira, 27 de agosto de 12
Whe
                   n
                                    Uso
                   • WEB SCALE
                   • THE CLOUD
                   • NOSQL
                   • ELASTIC
                   • HORIZONTAL SCALING
                   • VERTICAL TOO

segunda-feira, 27 de agosto de 12
Whe
                   n
                                    Uso
                   • WEB SCALE
                   • THE CLOUD
                   • NOSQL
                   • ELASTIC
                   • HORIZONTAL SCALING
                   • VERTICAL TOO

segunda-feira, 27 de agosto de 12
n
             Whe




                                    BULLSHIT




segunda-feira, 27 de agosto de 12
Whe
                   n
                                    Caia na real


                  Se você precisa escalar, sua base de dados
                  não vai magicamente fazer isso por você




segunda-feira, 27 de agosto de 12
Whe
                   n
                                        Uso


                          Então para que realmente ele é bom?




segunda-feira, 27 de agosto de 12
Whe
                   n
                                      Uso


                   • Armazenamento de sessões
                   • Cache
                   • Qualquer outra coisa que o
                           memcached faça




segunda-feira, 27 de agosto de 12
Whe
                   n
                                               Uso

                   • Cache: Site de noticias
                          • Leituras caras
                          • Mudança rápida de páginas
                          • Tracking dinâmico do que o usuário
                                    está fazendo



segunda-feira, 27 de agosto de 12
Whe
                   n
                                             Uso
                   • Cache: Site de noticias

                  Cacheando resultados genéricos:
                    SETEX <id da página>:content 600 <dados>




segunda-feira, 27 de agosto de 12
Whe
                   n
                                                 Uso

                   • Fila
                       BRPOP fila
                       LPUSH fila “descrição do job”


                       ex: Lib resque do GitHub https://github.com/defunkt/resque/




segunda-feira, 27 de agosto de 12
Whe
                   n
                                    Aplicações
                   • Ajax pooling / Long pooling
                   • Serviço de compartilhamento de
                           diretório ( GitHub)

                   • CSRF tokens
                   • Tokens temporários de OAuth
                   • Cache
                   • Chat

segunda-feira, 27 de agosto de 12
Whe
                   n
                                    Aplicações


                   • Github
                   • Flickr
                   • PHPad ;)



segunda-feira, 27 de agosto de 12
How
                                    E o PHP?


                                    Entra aonde?




segunda-feira, 27 de agosto de 12
How
                                       PHP + Redis


                                         Extensão phpredis
                                    http://github.com/nicolasff/phpredis




segunda-feira, 27 de agosto de 12
How
                                    phpredis



                   • Session handler
                   • up to date




segunda-feira, 27 de agosto de 12
How
                                    phpredis
              $redis = new Redis();
              $redis->connect(‘127.0.0.1’, 6379);
              $redis->watch(‘user’);
              $result = $redis->multi()
                 ->set(‘user’, ‘manolo’)
                 ->exec();

              echo $result !== false ? ‘Success’ : ‘Shit happens’;

              echo $redis->get(‘user’);




segunda-feira, 27 de agosto de 12
How
                                         PHP + Redis


                                         Extensão phpiredis
                                    http://github.com/seppo0010/phpiredis




segunda-feira, 27 de agosto de 12
How
                                    phpiredis



                   • Parsing de protocolo
                   • Baixo nível




segunda-feira, 27 de agosto de 12
How
                                    phpiredis

              $redis = phpiredis_connect(‘127.0.0.1’, 6379);
              phpiredis_command($redis, ‘WATCH user’);
              phpiredis_command($redis, ‘MULTI’);
              $user = “manolo”;
              phpiredis_command($redis, ‘SET user ‘.$user);
              $result = phpiredis_command($redis, ‘EXEC’);
              echo $result !== false ? ‘Success’ : ‘Shit happens’;
              echo phpiredis_command($redis, ‘GET user’);




segunda-feira, 27 de agosto de 12
How
                                    PHP + Redis


                                      Extensão Predis
                                    http://github.com/nrk/predis




segunda-feira, 27 de agosto de 12
How
                                     Predis


                   • Master/Slave auto select
                   • Pode fazer uso do phpiredis para
                           parsing

                   • Symfony bundle



segunda-feira, 27 de agosto de 12
How
                                    PHP + Redis


                                    Doctrine cache layer




segunda-feira, 27 de agosto de 12
How
                                       Doctrine



                   • Cache de query results diretamente
                           no redis.




segunda-feira, 27 de agosto de 12
How
                                    Redis


                   • É rápido!
                   • É divertido!
                   • Try-it try.redis-db.com



segunda-feira, 27 de agosto de 12
How
                                    Obrigado
                                       @kinncj
                                    kinncj@php.net




segunda-feira, 27 de agosto de 12

Redis – What, Why, When, How?

  • 1.
    Redis What? Why? When? How? segunda-feira, 27 de agosto de 12
  • 2.
    About • Software Engineer: Dafiti • Developer: About 10 • php.net, MeeGo, phpsp, fedora project, NoSQL BR, * • Zend Certified Engineer, Husband and Daddy segunda-feira, 27 de agosto de 12
  • 3.
    Redis • Memcached segunda-feira, 27 de agosto de 12
  • 4.
  • 5.
    Wha t Dafuck Redis? segunda-feira, 27 de agosto de 12
  • 6.
    Wha t Dafuck Redis? • Remote Dictionary Server segunda-feira, 27 de agosto de 12
  • 7.
    Wha t Dafuck Redis? • Remote Dictionary Server • Armazenamento chave-valor segunda-feira, 27 de agosto de 12
  • 8.
    Wha t Dafuck Redis? • Remote Dictionary Server • Armazenamento chave-valor • ... lista e executa operações segunda-feira, 27 de agosto de 12
  • 9.
    Wha t Dafuck Redis? • Remote Dictionary Server • Armazenamento chave-valor • ... lista e executa operações • Um servidor de estrutura de dados segunda-feira, 27 de agosto de 12
  • 10.
    Wha t Dafuck Redis? • Remote Dictionary Server • Armazenamento chave-valor • ... lista e executa operações • Um servidor de estrutura de dados • ... tem pub/sub e notificações segunda-feira, 27 de agosto de 12
  • 11.
    Wha t Dafuck Redis? • Remote Dictionary Server • Armazenamento chave-valor • ... lista e executa operações • Um servidor de estrutura de dados • ... tem pub/sub e notificações • Um bus de evento sem bloqueio segunda-feira, 27 de agosto de 12
  • 12.
    Wha t Dafuck Redis? • Remote Dictionary Server • Armazenamento chave-valor • ... lista e executa operações • Um servidor de estrutura de dados • ... tem pub/sub e notificações • Um bus de evento sem bloqueio • Uma memória compartilhada acessível via rede segunda-feira, 27 de agosto de 12
  • 13.
    Wha t Um canivete suíço segunda-feira, 27 de agosto de 12
  • 14.
    Wha t Seja o que for... • Mothafuckamente rápido! • Non-blocking I/O, um único segmento • 100,000+ escrita/leitura por segundo • Pequeno: ~16,000 linhas de código C • Escala para “baixo”: Amigável até mesmo com um simples VPS • Faz um novo tipo de recurso - em particular para escritas pesadas - viável para pequenas aplicações • Complementa sua camada de armazenamento segunda-feira, 27 de agosto de 12
  • 15.
    Wha t Breve histórico • Breve mesmo... segunda-feira, 27 de agosto de 12
  • 16.
    Wha t Breve histórico • Criado por Salvatore Sanfilippo ( antirez ) • Primeiro release: Março/2009 • “Adquirido” pela VMWare em Março de 2010 • Open Source ( BSD ) segunda-feira, 27 de agosto de 12
  • 17.
    Wha t Agenda! • Como funciona • Tipos de dados • Utilidade • PHP • Úteis segunda-feira, 27 de agosto de 12
  • 18.
    Wha t Inicio de tudo! $ git clone git://github.com/antirez/redis $ cd redis $ make $ ./redis-server segunda-feira, 27 de agosto de 12
  • 19.
    t Wha segunda-feira, 27 de agosto de 12
  • 20.
    Wha t Chaves • Chaves não devem conter espaços em branco! • ( essa restrição foi removida na versão 1.2) • Chaves curtas performam melhor • Convenção comum: tipo-de-objeto:id:campo • user:23:username = manolo • SHA1(data) Pode ser uma chave útil também segunda-feira, 27 de agosto de 12
  • 21.
    Wha t Tipos de dados segunda-feira, 27 de agosto de 12
  • 22.
    Wha t Tipos de dados • Binary-safe strings ( até 10GB ) • listas • conjuntos • Conjuntos sortidos • (Cada chave possuí uma pontuação) • hashes • Canais pub/sub segunda-feira, 27 de agosto de 12
  • 23.
    t Wha Os tipos de dados propriamente ditos!!! segunda-feira, 27 de agosto de 12
  • 24.
    Wha t Strings SET name Kinn SET age 23 MGET name age > Kinn >23 GETSET name Kinncj > Kinn segunda-feira, 27 de agosto de 12
  • 25.
    Wha t Strings SETEX age 3 20 GET age > 20 // .. 3 segundos após GET age > null segunda-feira, 27 de agosto de 12
  • 26.
    Wha t Inteiros INCR count >1 INCR count >2 INCRBY count 3 >5 segunda-feira, 27 de agosto de 12
  • 27.
    Wha t Hashes HMSET user name Kinn email kinncj@php.net HGET user email > kinncj@php.net HKEYS user > name > email HGETALL user > name > Kinn > email > kinncj@php.net segunda-feira, 27 de agosto de 12
  • 28.
    Wha t Listas RPUSH admins Kinn >1 RPUSH admins Manolo >2 LINDEX admins 0 > Kinn LLEN admins >2 RPOP admins > Manolo segunda-feira, 27 de agosto de 12
  • 29.
    Wha t Conjuntos SADD page:3:visitors 134 >1 SADD page:3:visitors 253 >1 SADD page:3:visitors 253 >0 SCARD page:3:visitors >2 SMEMBERS page:3:visitors > 134 > 253 SISMEMBER page:3:visitors 349 >0 segunda-feira, 27 de agosto de 12
  • 30.
    Wha t Conjuntos SADD page:6:visitors 253 SADD page:6:visitors 923 SADD page:6:visitors 13 SINTER page:3:visitors page:6:visitors > 253 segunda-feira, 27 de agosto de 12
  • 31.
    Wha t Conjuntos sortidos ZADD highscores 2930 Kinn ZADD highscores 1500 Manolo ZREVRANGE highscores 0 10 WITHSCORES > Kinn > 2930 > Manolo > 1500 segunda-feira, 27 de agosto de 12
  • 32.
    Wha t Exemplo Listas array(‘foo’, ‘bar’); Conjuntos suffle(array(‘foo’, ‘bar’)); Conjuntos sortidos ksort(array(3 => ‘foo’, 1 => ‘bar’)); segunda-feira, 27 de agosto de 12
  • 33.
    Why Os tipos básicos de cada linguagem existem no redis segunda-feira, 27 de agosto de 12
  • 34.
    Why Processe dados no redis ao invés do PHP segunda-feira, 27 de agosto de 12
  • 35.
    Why “SQL” no redis segunda-feira, 27 de agosto de 12
  • 36.
    Why SORT - SQL em seu NoSQL SORT chave SORT chave LIMIT 0 10 DESC SORT chave ALPHA SORT page:6:visitors BY user_*->rank GET user_* DESC segunda-feira, 27 de agosto de 12
  • 37.
    Why Pub/Sub segunda-feira, 27 de agosto de 12
  • 38.
    Why Pub/Sub • Redis faz BroadCast!!!!!! segunda-feira, 27 de agosto de 12
  • 39.
    Why Pub/Sub SUBSCRIBE mensagem SUBSCRIBE chan1 chan2 chan3 PUBLISH mensagem “Ola Mundo” PSUBSCRIBE chat.* segunda-feira, 27 de agosto de 12
  • 40.
    Why Goodies segunda-feira, 27 de agosto de 12
  • 41.
    Why Goodies • Replicação Master/Slave • Transações: MULTI / EXEC / DISCARD segunda-feira, 27 de agosto de 12
  • 42.
    Why Future Goodies segunda-feira, 27 de agosto de 12
  • 43.
    Why Future Goodies • Lua Scripting: EVAL segunda-feira, 27 de agosto de 12
  • 44.
    Why Future Goodies : Cluster segunda-feira, 27 de agosto de 12
  • 45.
    Why Future Goodies : Cluster • Redis Cluster ( Tão atrasado quanto o PHP 6 ) segunda-feira, 27 de agosto de 12
  • 46.
    Why Future Goodies : Cluster Velocidade Redis é rápido É muito improvável que CPU seja gargalo segunda-feira, 27 de agosto de 12
  • 47.
    Why Future Goodies : Cluster Velocidade segunda-feira, 27 de agosto de 12
  • 48.
    Why Future Goodies : Cluster Redis é rápido segunda-feira, 27 de agosto de 12
  • 49.
    Why Future Goodies : Cluster É muito improvável que CPU seja gargalo segunda-feira, 27 de agosto de 12
  • 50.
    Why Future Goodies : Cluster O que você faz quando está sem RAM? segunda-feira, 27 de agosto de 12
  • 51.
    Why Future Goodies : Cluster Esperar pelo cluster Redis? Se você puder... o Cluster é parece ser ótimo segunda-feira, 27 de agosto de 12
  • 52.
    Why Goodie! Armazena em memória. Backup em disco. segunda-feira, 27 de agosto de 12
  • 53.
    Whe n 2 centavos Armazene em disco. Carregue hot-data na memória. segunda-feira, 27 de agosto de 12
  • 54.
    Whe n Uso • WEB SCALE • THE CLOUD • NOSQL • ELASTIC • HORIZONTAL SCALING • VERTICAL TOO segunda-feira, 27 de agosto de 12
  • 55.
    Whe n Uso • WEB SCALE • THE CLOUD • NOSQL • ELASTIC • HORIZONTAL SCALING • VERTICAL TOO segunda-feira, 27 de agosto de 12
  • 56.
    n Whe BULLSHIT segunda-feira, 27 de agosto de 12
  • 57.
    Whe n Caia na real Se você precisa escalar, sua base de dados não vai magicamente fazer isso por você segunda-feira, 27 de agosto de 12
  • 58.
    Whe n Uso Então para que realmente ele é bom? segunda-feira, 27 de agosto de 12
  • 59.
    Whe n Uso • Armazenamento de sessões • Cache • Qualquer outra coisa que o memcached faça segunda-feira, 27 de agosto de 12
  • 60.
    Whe n Uso • Cache: Site de noticias • Leituras caras • Mudança rápida de páginas • Tracking dinâmico do que o usuário está fazendo segunda-feira, 27 de agosto de 12
  • 61.
    Whe n Uso • Cache: Site de noticias Cacheando resultados genéricos: SETEX <id da página>:content 600 <dados> segunda-feira, 27 de agosto de 12
  • 62.
    Whe n Uso • Fila BRPOP fila LPUSH fila “descrição do job” ex: Lib resque do GitHub https://github.com/defunkt/resque/ segunda-feira, 27 de agosto de 12
  • 63.
    Whe n Aplicações • Ajax pooling / Long pooling • Serviço de compartilhamento de diretório ( GitHub) • CSRF tokens • Tokens temporários de OAuth • Cache • Chat segunda-feira, 27 de agosto de 12
  • 64.
    Whe n Aplicações • Github • Flickr • PHPad ;) segunda-feira, 27 de agosto de 12
  • 65.
    How E o PHP? Entra aonde? segunda-feira, 27 de agosto de 12
  • 66.
    How PHP + Redis Extensão phpredis http://github.com/nicolasff/phpredis segunda-feira, 27 de agosto de 12
  • 67.
    How phpredis • Session handler • up to date segunda-feira, 27 de agosto de 12
  • 68.
    How phpredis $redis = new Redis(); $redis->connect(‘127.0.0.1’, 6379); $redis->watch(‘user’); $result = $redis->multi() ->set(‘user’, ‘manolo’) ->exec(); echo $result !== false ? ‘Success’ : ‘Shit happens’; echo $redis->get(‘user’); segunda-feira, 27 de agosto de 12
  • 69.
    How PHP + Redis Extensão phpiredis http://github.com/seppo0010/phpiredis segunda-feira, 27 de agosto de 12
  • 70.
    How phpiredis • Parsing de protocolo • Baixo nível segunda-feira, 27 de agosto de 12
  • 71.
    How phpiredis $redis = phpiredis_connect(‘127.0.0.1’, 6379); phpiredis_command($redis, ‘WATCH user’); phpiredis_command($redis, ‘MULTI’); $user = “manolo”; phpiredis_command($redis, ‘SET user ‘.$user); $result = phpiredis_command($redis, ‘EXEC’); echo $result !== false ? ‘Success’ : ‘Shit happens’; echo phpiredis_command($redis, ‘GET user’); segunda-feira, 27 de agosto de 12
  • 72.
    How PHP + Redis Extensão Predis http://github.com/nrk/predis segunda-feira, 27 de agosto de 12
  • 73.
    How Predis • Master/Slave auto select • Pode fazer uso do phpiredis para parsing • Symfony bundle segunda-feira, 27 de agosto de 12
  • 74.
    How PHP + Redis Doctrine cache layer segunda-feira, 27 de agosto de 12
  • 75.
    How Doctrine • Cache de query results diretamente no redis. segunda-feira, 27 de agosto de 12
  • 76.
    How Redis • É rápido! • É divertido! • Try-it try.redis-db.com segunda-feira, 27 de agosto de 12
  • 77.
    How Obrigado @kinncj kinncj@php.net segunda-feira, 27 de agosto de 12