SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
http://redis.io




domingo, 11 de dezembro de 2011
“MEMORY IS THE NEW
            DISK. DISK IS THE NEW
                    TAPE.”



                                  Jim Gray




domingo, 11 de dezembro de 2011
VAMOS FALAR DE
                               REDIS
                                  Mas primeiro...




domingo, 11 de dezembro de 2011
NOSQL
                 Mudança de paradigma
                 SQL?
            Cada “problema” uma solução
          mais adequada de persistência.




domingo, 11 de dezembro de 2011
domingo, 11 de dezembro de 2011
domingo, 11 de dezembro de 2011
QUANDO USAR?

                      Cache
                      Stock prices
                      Sharding Directory Service

                      Real time data collection
                     Real time communication
                     Analytics



domingo, 11 de dezembro de 2011
REDIS, QUE DIABOS
                    É ISSO?



domingo, 11 de dezembro de 2011
CHAVE-VALOR
                                    Estrutura de dados
domingo, 11 de dezembro de 2011
CHAVE                              VALOR

                    user:1        name     Ayrton       age        23

                    user:2        name     João        phone    555-555

            user:1:friends        user:2   user:3      user:4    user:5
                    user:3        name      José       email    xp@a.com

                    user:4        name     Mario        age        34

                    user:5        name     Mara         age        25

              user:1:acess         140

             user:1:token         H13NDSME3MDSSR6MG6


domingo, 11 de dezembro de 2011
CLIENTS PARA REDIS:
              ActionScript        Java
              C                   Lua
              C#                  Node.js
              C++                 Objective-C
              Clojure             Perl
              Common Lisp         PHP
              Erlang              Pure Data
              Fancy               Python
              Go                  Ruby
              Haskell             Scala
              haXe                Smaltalk
              Io                  Tcl

domingo, 11 de dezembro de 2011
KEYS

              Você pesquisa pela chave.

              Todas as chaves ficam na memória.

              O(1)

              Chaves longas, má idéia.

              Chaves curtas, má idéia também.

              Tente seguir um padrão.


domingo, 11 de dezembro de 2011
No terminal...


        Inicie o server:




        Inicie o client:



        Insira um registro:




domingo, 11 de dezembro de 2011
REDIS DATA TYPES

                      String

                      Lists

                      Hashes

                      Sets

                      Sorted Sets
domingo, 11 de dezembro de 2011
STRINGS




domingo, 11 de dezembro de 2011
APPEND   key value

                                  DECR     key

                                  DECRBY   key decrement

                                  GET      key

                                  GETBIT   key offset

                                  GETRANGE key start end

                                  GETSET   key value

                                  INCR     key

                                  INCRBY   key increment

                                  MGET     key [key ...]

                                  MSET     key value [key value ...]

                                  MSETNX   key value [key value ...]

                                  SET      key value

                                  SETBIT   key offset value

                                  SETEX    key seconds value

                                  SETNX    key value

                                  SETRANGE key offset value

                                  STRLEN   key


domingo, 11 de dezembro de 2011
LISTS




domingo, 11 de dezembro de 2011
BLPOP       key [key ...] timeout

                                  BRPOP       key [key ...] timeout

                                  BRPOPLPUSH source destination timeout

                                  LINDEX      key index

                                  LINSERT     key BEFORE|AFTER pivot value

                                  LLEN        key

                                  LPOP        key

                                  LPUSH       key value [value ...]

                                  LPUSHX      key value

                                  LRANGE      key start stop

                                  LREM        key count value

                                  LSET        key index value

                                  LTRIM       key start stop

                                  RPOP        key

                                  RPOPLPUSH   source destination

                                  RPUSH       key value [value ...]

                                  RPUSHX      key value



domingo, 11 de dezembro de 2011
HASHES




domingo, 11 de dezembro de 2011
HDEL     key field [field ...]

                                  HEXISTS key field

                                  HGET     key field

                                  HGETALL key

                                  HINCRBY key field increment

                                  HKEYS    key

                                  HLEN     key

                                  HMGET    key field [field ...]

                                  HMSET    key field value [field value ...]

                                  HSET     key field value

                                  HSETNX   key field value

                                  HVALS    key




domingo, 11 de dezembro de 2011
SETS




domingo, 11 de dezembro de 2011
SADD         key member [member ...]

                                  SCARD        key

                                  SDIFF        key [key ...]

                                  SDIFFSTORE   destination key [key ...]

                                  SINTER       key [key ...]

                                  SINTERSTORE destination key [key ...]

                                  SISMEMBER    key member

                                  SMEMBERS     key

                                  SMOVE        source destination member

                                  SPOP         key

                                  SRANDMEMBER key

                                  SREM         key member [member ...]

                                  SUNION       key [key ...]

                                  SUNIONSTORE destination key [key ...]




domingo, 11 de dezembro de 2011
SORTED SETS




domingo, 11 de dezembro de 2011
ZADD                          key score member [score] [member]
    ZCARD                         key
    ZCOUNT                        key min max
    ZINCRBY                       key increment member
    ZINTERSTORE                   destination numkeys key [key ...][WEIGHTS weight [weight ...]]
    [AGGREGATE SUM|MIN|MAX]
    ZRANGE                        key start stop [WITHSCORES]
    ZRANGEBYSCORE                 key min max [WITHSCORES] [LIMIT offset count]
    ZRANK                         key member
    ZREM                          key member [member ...]
    ZREMRANGEBYRANK               key start stop
    ZREMRANGEBYSCORE key min max
    ZREVRANGE                     key start stop [WITHSCORES]
    ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
    ZREVRANK                      key member
    ZSCORE                        key member
    ZUNIONSTORE                   destination numkeys key [key ...][WEIGHTS weight [weight ...]]
    [AGGREGATE SUM|MIN|MAX]




domingo, 11 de dezembro de 2011
SNAPSHOTTING
     redis.conf:
                                  save 900 1
                                  save 300 10
                                  save 60 10000

    Nome do arquivo:
                                  dbfilename dump.rdb

     Diretório do dump:
                                  dir ./


domingo, 11 de dezembro de 2011
REPLICATION
          redis.conf:


                          SLAVE    slaveof <masterip> <masterport>


                          SLAVE    masterauth <master-password>


                          MASTER   requirepass <pass>




domingo, 11 de dezembro de 2011
E MAIS...

          DBSIZE

          INFO

          SLAVEOF host port

          BGSAVE

          FLUSHALL

          FLUSHDB

          SAVE




domingo, 11 de dezembro de 2011
CODE...
domingo, 11 de dezembro de 2011
REFERÊNCIAS


              http://redis.io
              http://www.slideshare.net/MaxwellDayvson/redis-e-as-facilidades-de-trabalhar-com-um-banco-de-dados-
              nosql
              http://www.slideshare.net/gleicon/lesprit-de-lescalier
              http://www.paperplanes.de/2010/2/16/a_collection_of_redis_use_cases.html
              http://highscalability.com/blog/2011/7/6/11-common-web-use-cases-solved-in-redis.html




domingo, 11 de dezembro de 2011

Más contenido relacionado

Redis - Marcelo Tozzi - Lomadee

  • 2. “MEMORY IS THE NEW DISK. DISK IS THE NEW TAPE.” Jim Gray domingo, 11 de dezembro de 2011
  • 3. VAMOS FALAR DE REDIS Mas primeiro... domingo, 11 de dezembro de 2011
  • 4. NOSQL Mudança de paradigma SQL? Cada “problema” uma solução mais adequada de persistência. domingo, 11 de dezembro de 2011
  • 5. domingo, 11 de dezembro de 2011
  • 6. domingo, 11 de dezembro de 2011
  • 7. QUANDO USAR? Cache Stock prices Sharding Directory Service Real time data collection Real time communication Analytics domingo, 11 de dezembro de 2011
  • 8. REDIS, QUE DIABOS É ISSO? domingo, 11 de dezembro de 2011
  • 9. CHAVE-VALOR Estrutura de dados domingo, 11 de dezembro de 2011
  • 10. CHAVE VALOR user:1 name Ayrton age 23 user:2 name João phone 555-555 user:1:friends user:2 user:3 user:4 user:5 user:3 name José email xp@a.com user:4 name Mario age 34 user:5 name Mara age 25 user:1:acess 140 user:1:token H13NDSME3MDSSR6MG6 domingo, 11 de dezembro de 2011
  • 11. CLIENTS PARA REDIS: ActionScript Java C Lua C# Node.js C++ Objective-C Clojure Perl Common Lisp PHP Erlang Pure Data Fancy Python Go Ruby Haskell Scala haXe Smaltalk Io Tcl domingo, 11 de dezembro de 2011
  • 12. KEYS Você pesquisa pela chave. Todas as chaves ficam na memória. O(1) Chaves longas, má idéia. Chaves curtas, má idéia também. Tente seguir um padrão. domingo, 11 de dezembro de 2011
  • 13. No terminal... Inicie o server: Inicie o client: Insira um registro: domingo, 11 de dezembro de 2011
  • 14. REDIS DATA TYPES String Lists Hashes Sets Sorted Sets domingo, 11 de dezembro de 2011
  • 15. STRINGS domingo, 11 de dezembro de 2011
  • 16. APPEND key value DECR key DECRBY key decrement GET key GETBIT key offset GETRANGE key start end GETSET key value INCR key INCRBY key increment MGET key [key ...] MSET key value [key value ...] MSETNX key value [key value ...] SET key value SETBIT key offset value SETEX key seconds value SETNX key value SETRANGE key offset value STRLEN key domingo, 11 de dezembro de 2011
  • 17. LISTS domingo, 11 de dezembro de 2011
  • 18. BLPOP key [key ...] timeout BRPOP key [key ...] timeout BRPOPLPUSH source destination timeout LINDEX key index LINSERT key BEFORE|AFTER pivot value LLEN key LPOP key LPUSH key value [value ...] LPUSHX key value LRANGE key start stop LREM key count value LSET key index value LTRIM key start stop RPOP key RPOPLPUSH source destination RPUSH key value [value ...] RPUSHX key value domingo, 11 de dezembro de 2011
  • 19. HASHES domingo, 11 de dezembro de 2011
  • 20. HDEL key field [field ...] HEXISTS key field HGET key field HGETALL key HINCRBY key field increment HKEYS key HLEN key HMGET key field [field ...] HMSET key field value [field value ...] HSET key field value HSETNX key field value HVALS key domingo, 11 de dezembro de 2011
  • 21. SETS domingo, 11 de dezembro de 2011
  • 22. SADD key member [member ...] SCARD key SDIFF key [key ...] SDIFFSTORE destination key [key ...] SINTER key [key ...] SINTERSTORE destination key [key ...] SISMEMBER key member SMEMBERS key SMOVE source destination member SPOP key SRANDMEMBER key SREM key member [member ...] SUNION key [key ...] SUNIONSTORE destination key [key ...] domingo, 11 de dezembro de 2011
  • 23. SORTED SETS domingo, 11 de dezembro de 2011
  • 24. ZADD key score member [score] [member] ZCARD key ZCOUNT key min max ZINCRBY key increment member ZINTERSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] ZRANGE key start stop [WITHSCORES] ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] ZRANK key member ZREM key member [member ...] ZREMRANGEBYRANK key start stop ZREMRANGEBYSCORE key min max ZREVRANGE key start stop [WITHSCORES] ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] ZREVRANK key member ZSCORE key member ZUNIONSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] domingo, 11 de dezembro de 2011
  • 25. SNAPSHOTTING redis.conf: save 900 1 save 300 10 save 60 10000 Nome do arquivo: dbfilename dump.rdb Diretório do dump: dir ./ domingo, 11 de dezembro de 2011
  • 26. REPLICATION redis.conf: SLAVE slaveof <masterip> <masterport> SLAVE masterauth <master-password> MASTER requirepass <pass> domingo, 11 de dezembro de 2011
  • 27. E MAIS... DBSIZE INFO SLAVEOF host port BGSAVE FLUSHALL FLUSHDB SAVE domingo, 11 de dezembro de 2011
  • 28. CODE... domingo, 11 de dezembro de 2011
  • 29. REFERÊNCIAS http://redis.io http://www.slideshare.net/MaxwellDayvson/redis-e-as-facilidades-de-trabalhar-com-um-banco-de-dados- nosql http://www.slideshare.net/gleicon/lesprit-de-lescalier http://www.paperplanes.de/2010/2/16/a_collection_of_redis_use_cases.html http://highscalability.com/blog/2011/7/6/11-common-web-use-cases-solved-in-redis.html domingo, 11 de dezembro de 2011