Redis - N✮SQL Berlin

  • 6,907 views
Uploaded on

Redis, the fast and furious key-value store.

Redis, the fast and furious key-value store.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,907
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
142
Comments
0
Likes
14

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