Your SlideShare is downloading. ×
0
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Redis - N✮SQL Berlin
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Redis - N✮SQL Berlin

7,213

Published on

Redis, the fast and furious key-value store.

Redis, the fast and furious key-value store.

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,213
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
152
Comments
0
Likes
15
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • (that’s not a lot, even for C code)
  • (even for C code)
  • (old school)
  • Strings can’t be longer than 1GB
    Lists are implemented as doubly linked lists
    Sets are stored as hashesh
  • Different datatypes require using different command sets. Not doing so will raise errors.
  • Get is wicked fast.
  • incr requires parsing of the value
  • lset is destructive, replaces the existing element
  • List access only through ranges, getting a whole list requires you to fetch the length first.
  • Data in Redis isn’t volatile, at least most of the time
  • ..and only if necessary.
    Data is put into a single dump file.
  • Database is dumped into a tempfile, then renamed.
    It’s possible to loose data in the dumping period.
  • Writes out data after x seconds if at least y number of keys have changed.
    On startup the dump is reread into memory.
  • Fast, more complex, datatypes
  • Redis stores the daemon state and is used for service lookup.
  • Transcript

    • 1. Redis - Fast and Furious N✮SQL Berlin Mathias Meyer, 22.10.2009 Peritor GmbH
    • 2. Self I work at Peritor in Berlin I tweet @roidrage I code at http://github.com/mattmatt I blog at http://paperplanes.de 2
    • 3. Peritor Working on http://scalarium.com 3
    • 4. Redis - Key-Value Store Simple, yet awesome Fast, yet nonvolatile code.google.com/p/redis 4
    • 5. Redis REmote DIctionary Server 5
    • 6. Redis Went public in March 2009 Just reached 1.0 6
    • 7. Redis < 6000 lines of code 7
    • 8. Redis And the code is simple 8
    • 9. Redis No threading, just one process 9
    • 10. Redis Like Memcached, only awesome 10
    • 11. Redis Simple and efficient text-based protocol (just like grandma and Memcached used to make) 11
    • 12. Redis Protocol 12
    • 13. Redis Protocol redis[“key”] = “value” 13
    • 14. Redis Protocol Duh! 14
    • 15. Redis Protocol Values can be strings, lists or sets 15
    • 16. Redis Protocol - Special Ops Push and pop elements (atomic) Fetch arbitrary set and array elements Sorting 16
    • 17. Redis Protocol set foo 4 1000 +OK 17
    • 18. Redis Protocol set foo 4 Request 1000 +OK Response 17
    • 19. Redis Protocol get foo $4 1000 get bar $-1 18
    • 20. Redis Protocol get foo Request $4 Response 1000 get bar Reques $-1 Respons 18
    • 21. Redis Protocol incr foo :1001 type foo +string 19
    • 22. Redis Protocol - Lists lpush pizza 4 fury +OK rpush pizza 8 ortolana +OK 20
    • 23. Redis Protocol - Lists lrange pizza 0 1 *2 $4 fury $8 ortolana 21
    • 24. Redis Protocol - Lists lrange pizza 0 1 Request *2 $4 fury Response $8 ortolana 21
    • 25. Redis Protocol - Sets sadd mq 8 rabbitmq :1 sadd mq 6 zeromq :1 22
    • 26. Redis Protocol - Sets smembers mq *2 $6 zeromq $8 rabbitmq 23
    • 27. Redis Protocol - Sets sort mq alpha *2 $8 rabbitmq $6 zeromq 24
    • 28. Redis Protocol - The Rest Random list/set access Intersections, Unions Monitoring Controlling the Server Multi-Set Commands 25
    • 29. Redis Data is held in memory, but can be persisted 26
    • 30. Redis Key-Value Database Persistent Asynchronous Just like Super Pursuit Mode 27
    • 31. Redis Database Data is written to disk asynchronously 28
    • 32. Redis Database Redis Server Dump Database fork() Redis Server rename() exit() 29
    • 33. Redis Database save 900 1 save 300 10 save 60 100000 30
    • 34. Replication 1 Master - N Slaves Asynchronous on Master Synchronous on Slave 31
    • 35. Redis Replication Like dumping the database, only to a different file descriptor. 32
    • 36. Redis Replication Redis Master Redis Slave Redis Slave Redis Slave Redis Slave 33
    • 37. Redis - Scaling Horizontal • Run multiple Redis processes • Use HashRing (e.g. in redis-rb) 34
    • 38. Redis - Scaling Vertical • Master-Slave setup • Fetch data from any slave (e.g. random) 35
    • 39. To Redis, or not to Redis? 36
    • 40. As always, it depends 37
    • 41. To Redis Caching Statistical data Recoverable state Worker queue 38
    • 42. Not to Redis 100% consistent dataset required Data is larger than memory 39
    • 43. Redis Use Cases Nanite - A self-assembling cluster of Ruby daemons 40
    • 44. The most important 41
    • 45. Is it faster than 42
    • 46. No, but fast enough for you (if you need the extra features) 43
    • 47. Redis Simple, fast, awesome. 44
    • 48. Questions 45
    • 49. Peritor GmbH Blücherstr. 22, Hof III Aufgang 6 10961 Berlin Tel.: +49 (0)30 69 20 09 84 0 Fax: +49 (0)30 69 20 09 84 9 Internet: www.peritor.com E-Mail: info@peritor.com © Peritor GmbH - Alle Rechte Vorbehalten

    ×