SlideShare a Scribd company logo
1 of 28
Download to read offline
Redis

                       Ole-Martin Mørk - Bekk Consulting AS

                                     javaBin
                                      14/03/12




onsdag 14. mars 2012
Agenda
       Introduksjon til Redis
                 Datatyper
                 Persistering
       Replikering og Sharding
       Tips og triks




onsdag 14. mars 2012
Hva er Redis?

                       • En in-memory key/value datastore
                       • Utrolig rask
                       • Masse funksjonalitet


onsdag 14. mars 2012
Datatyper i Redis

               • Strings
               • Lists
               • Sets
               • Hashes
               • Sorted Sets

onsdag 14. mars 2012
Datatyper i Redis

               •       Strings   > set usergroup javabin
                                 OK

               • Lists
                                 > get usergroup
                                 "javabin"
                                 > del usergroup

               • Sets
                                 (integer) 1

                                 > incr antall

               • Hashes
                                 (integer) 1
                                 > decr antall
                                 (integer) 0

               • Sorted Sets

onsdag 14. mars 2012
Datatyper i Redis

               •       Strings   > lpush members Sven
                                 (integer) 1

               • Lists
                                 > lpush members Kjetil
                                 (integer) 2
                                 > lpush members Ole-Martin

               • Sets
                                 (integer) 3

                                 > rpop members

               • Hashes
                                 "Sven"
                                 > lrange members 0 2
                                 1) "Ole-Martin"

               • Sorted Sets
                                 2) "Kjetil"




onsdag 14. mars 2012
Datatyper i Redis

               •       Strings   > sadd jbmeet nosql
                                 (integer) 1

               • Lists
                                 > sadd jbmeet jvm
                                 (integer) 1
                                 > sadd exmeet nosql

               • Sets
                                 (integer) 1

                                 > sunion jbmeet exmeet

               • Hashes
                                 1) "nosql"
                                 2) "jvm"
                                 > spop jbmeet

               • Sorted Sets
                                 1) "nosql"




onsdag 14. mars 2012
Datatyper i Redis

               •       Strings   > hset usergroup name javabin
                                 (integer) 1

               • Lists           > hset usergroup members 1000
                                 (integer) 1

               • Sets            > hgetall usergroup
                                 1) "name"

               • Hashes
                                 2) "javabin"
                                 3) "members"
                                 4) "1000"

               • Sorted Sets

onsdag 14. mars 2012
Datatyper i Redis

               •       Strings   > zadd pizza 10 nosql
                                 (integer) 1

               • Lists
                                 > zadd pizza 20 jvm
                                 (integer) 1


               • Sets
                                 > zrangebyscore pizza 0 20
                                 1) "nosql"
                                 2) "jvm"

               • Hashes          > zrevrangebyscore pizza inf -inf
                                 1) "jvm"

               • Sorted Sets
                                 2) "nosql"




onsdag 14. mars 2012
Eksempel



onsdag 14. mars 2012
Applikasjon




onsdag 14. mars 2012
Datamodell
                         storyId           story:1
                                            story:2
                           1..5             byte[]
                                             byte[]
                                          story:tag:1
                                           tag:story:2
                                        tag1, tag2, tag3
                                       tagnavn1, tagnavn2
                          zstories           tag:2
                                          tag:tagnavn1
                       storyId:votes    story1, story2
                                        story:1, story:2



onsdag 14. mars 2012
Persistering



onsdag 14. mars 2012
RDB persistence

                       • Dumper hele databasen til disk
                       • På gitte intervaller
                        • Antall skriv
                        • Antall minutter

onsdag 14. mars 2012
AOF persistence

                       • Skriver kontinuerlig til disk
                       • Tre flush-nivåer
                        • Hver skriv
                        • Hvert sekund
                        • OS-et bestemmer

onsdag 14. mars 2012
Anbefalt



onsdag 14. mars 2012
Replikering
                            &
                        Sharding


onsdag 14. mars 2012
Replikering




onsdag 14. mars 2012
Sharding


                       • Ikke innebygd støtte for sharding
                       • Må implementeres selv


onsdag 14. mars 2012
maskin 1                maskin 2
                       32 instanser            32 instanser   3




                                      Server


onsdag 14. mars 2012
Annen funksjonalitet

                       • Transaksjoner
                       • Optimistisk låsing
                       • Expire keys
                       • Publish/Subscribe
                       • Pipelining

onsdag 14. mars 2012
Redis fremover


                       • 2.6 branch kom forrige uke
                       • 3.0 mot slutten av året.


onsdag 14. mars 2012
Viktig å huske på

                       • Vær konsistent i nøkkel-navngivningen
                       • Lær deg datatypene
                       • Sharding
                       • Garbage-collection

onsdag 14. mars 2012
Argumenter



onsdag 14. mars 2012
Argumenter


                       It’s a VMWare database




onsdag 14. mars 2012
Argumenter

                       • Youporn bruker Redis
                        • 100.000.000 sidevisninger hver dag
                        • 300.000 spørringer per sekund


onsdag 14. mars 2012
http://redis.io



                       http://github.com/olemartin/digger

onsdag 14. mars 2012
Takk for meg!




        Ole-Martin Mørk

     @olemartin
  about.me/olemartin
onsdag 14. mars 2012

More Related Content

More from Ole-Martin Mørk

Patterns for key-value stores
Patterns for key-value storesPatterns for key-value stores
Patterns for key-value storesOle-Martin Mørk
 
Du må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjonDu må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjonOle-Martin Mørk
 
Collaborative Filtering in Map/Reduce
Collaborative Filtering in Map/ReduceCollaborative Filtering in Map/Reduce
Collaborative Filtering in Map/ReduceOle-Martin Mørk
 

More from Ole-Martin Mørk (6)

Graph search with Neo4j
Graph search with Neo4jGraph search with Neo4j
Graph search with Neo4j
 
Patterns for key-value stores
Patterns for key-value storesPatterns for key-value stores
Patterns for key-value stores
 
Polyglot persistence
Polyglot persistencePolyglot persistence
Polyglot persistence
 
Du må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjonDu må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjon
 
Hele butikken i skyen
Hele butikken i skyenHele butikken i skyen
Hele butikken i skyen
 
Collaborative Filtering in Map/Reduce
Collaborative Filtering in Map/ReduceCollaborative Filtering in Map/Reduce
Collaborative Filtering in Map/Reduce
 

Presentation of Redis

  • 1. Redis Ole-Martin Mørk - Bekk Consulting AS javaBin 14/03/12 onsdag 14. mars 2012
  • 2. Agenda Introduksjon til Redis Datatyper Persistering Replikering og Sharding Tips og triks onsdag 14. mars 2012
  • 3. Hva er Redis? • En in-memory key/value datastore • Utrolig rask • Masse funksjonalitet onsdag 14. mars 2012
  • 4. Datatyper i Redis • Strings • Lists • Sets • Hashes • Sorted Sets onsdag 14. mars 2012
  • 5. Datatyper i Redis • Strings > set usergroup javabin OK • Lists > get usergroup "javabin" > del usergroup • Sets (integer) 1 > incr antall • Hashes (integer) 1 > decr antall (integer) 0 • Sorted Sets onsdag 14. mars 2012
  • 6. Datatyper i Redis • Strings > lpush members Sven (integer) 1 • Lists > lpush members Kjetil (integer) 2 > lpush members Ole-Martin • Sets (integer) 3 > rpop members • Hashes "Sven" > lrange members 0 2 1) "Ole-Martin" • Sorted Sets 2) "Kjetil" onsdag 14. mars 2012
  • 7. Datatyper i Redis • Strings > sadd jbmeet nosql (integer) 1 • Lists > sadd jbmeet jvm (integer) 1 > sadd exmeet nosql • Sets (integer) 1 > sunion jbmeet exmeet • Hashes 1) "nosql" 2) "jvm" > spop jbmeet • Sorted Sets 1) "nosql" onsdag 14. mars 2012
  • 8. Datatyper i Redis • Strings > hset usergroup name javabin (integer) 1 • Lists > hset usergroup members 1000 (integer) 1 • Sets > hgetall usergroup 1) "name" • Hashes 2) "javabin" 3) "members" 4) "1000" • Sorted Sets onsdag 14. mars 2012
  • 9. Datatyper i Redis • Strings > zadd pizza 10 nosql (integer) 1 • Lists > zadd pizza 20 jvm (integer) 1 • Sets > zrangebyscore pizza 0 20 1) "nosql" 2) "jvm" • Hashes > zrevrangebyscore pizza inf -inf 1) "jvm" • Sorted Sets 2) "nosql" onsdag 14. mars 2012
  • 12. Datamodell storyId story:1 story:2 1..5 byte[] byte[] story:tag:1 tag:story:2 tag1, tag2, tag3 tagnavn1, tagnavn2 zstories tag:2 tag:tagnavn1 storyId:votes story1, story2 story:1, story:2 onsdag 14. mars 2012
  • 14. RDB persistence • Dumper hele databasen til disk • På gitte intervaller • Antall skriv • Antall minutter onsdag 14. mars 2012
  • 15. AOF persistence • Skriver kontinuerlig til disk • Tre flush-nivåer • Hver skriv • Hvert sekund • OS-et bestemmer onsdag 14. mars 2012
  • 17. Replikering & Sharding onsdag 14. mars 2012
  • 19. Sharding • Ikke innebygd støtte for sharding • Må implementeres selv onsdag 14. mars 2012
  • 20. maskin 1 maskin 2 32 instanser 32 instanser 3 Server onsdag 14. mars 2012
  • 21. Annen funksjonalitet • Transaksjoner • Optimistisk låsing • Expire keys • Publish/Subscribe • Pipelining onsdag 14. mars 2012
  • 22. Redis fremover • 2.6 branch kom forrige uke • 3.0 mot slutten av året. onsdag 14. mars 2012
  • 23. Viktig å huske på • Vær konsistent i nøkkel-navngivningen • Lær deg datatypene • Sharding • Garbage-collection onsdag 14. mars 2012
  • 25. Argumenter It’s a VMWare database onsdag 14. mars 2012
  • 26. Argumenter • Youporn bruker Redis • 100.000.000 sidevisninger hver dag • 300.000 spørringer per sekund onsdag 14. mars 2012
  • 27. http://redis.io http://github.com/olemartin/digger onsdag 14. mars 2012
  • 28. Takk for meg! Ole-Martin Mørk @olemartin about.me/olemartin onsdag 14. mars 2012