View
552
Download
0
Category
Preview:
DESCRIPTION
A presentation of Redis for the norwegian Java Usergroup javaBin. In norwegian.
Citation preview
Redis
Ole-Martin Mørk - Bekk Consulting AS
javaBin14/03/12
onsdag 14. mars 2012
AgendaIntroduksjon 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
• Strings
• Lists
• Sets
• Hashes
• Sorted Sets
Datatyper i Redis
onsdag 14. mars 2012
Datatyper i Redis
> set usergroup javabinOK> get usergroup"javabin"> del usergroup(integer) 1
> incr antall(integer) 1> decr antall(integer) 0
• Strings
• Lists
• Sets
• Hashes
• Sorted Sets
onsdag 14. mars 2012
Datatyper i Redis
• Strings
• Lists
• Sets
• Hashes
• Sorted Sets
> lpush members Sven(integer) 1> lpush members Kjetil(integer) 2> lpush members Ole-Martin(integer) 3
> rpop members"Sven"> lrange members 0 21) "Ole-Martin"2) "Kjetil"
onsdag 14. mars 2012
Datatyper i Redis
• Strings
• Lists
• Sets
• Hashes
• Sorted Sets
> sadd jbmeet nosql(integer) 1> sadd jbmeet jvm(integer) 1> sadd exmeet nosql(integer) 1
> sunion jbmeet exmeet1) "nosql"2) "jvm"> spop jbmeet1) "nosql"
onsdag 14. mars 2012
Datatyper i Redis
> hset usergroup name javabin(integer) 1
> hset usergroup members 1000(integer) 1
> hgetall usergroup1) "name"2) "javabin"3) "members"4) "1000"
• Strings
• Lists
• Sets
• Hashes
• Sorted Sets
onsdag 14. mars 2012
Datatyper i Redis
> zadd pizza 10 nosql(integer) 1> zadd pizza 20 jvm(integer) 1
> zrangebyscore pizza 0 201) "nosql"2) "jvm"
> zrevrangebyscore pizza inf -inf1) "jvm"2) "nosql"
• Strings
• Lists
• Sets
• Hashes
• Sorted Sets
onsdag 14. mars 2012
Eksempel
onsdag 14. mars 2012
Applikasjon
onsdag 14. mars 2012
Datamodell
storyId1..5
zstoriesstoryId:votes
story:1byte[]story:2byte[]
story:tag:1tag1, tag2, tag3
tag:story:2tagnavn1, tagnavn2
tag:2story1, story2
tag:tagnavn1story: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
32 instanser
maskin 2
32 instanser32 instanser
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
It’s a VMWare database
Argumenter
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
@olemartinabout.me/olemartin
onsdag 14. mars 2012
Recommended