Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf ·...
Transcript of Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf ·...
![Page 1: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/1.jpg)
CachingMemcached vs. Redis
San Francisco MySQL Meetup
Ryan LoweErin O’Neill
1
![Page 2: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/2.jpg)
Databases
WE LOVE THEM...
Except when we don’t
2
![Page 3: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/3.jpg)
When Databases Rule
• Many access patterns on the same set of data
• Transactions (both monetary and isolated units of work)
• Don’t know what the end state access patterns will be
• Always :)
3
![Page 4: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/4.jpg)
When Databases Suck
• Lots of concurrent users
• ORMs
• Big Data Sets
• Small Pockets of VERY hot data
4
![Page 5: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/5.jpg)
How Caching Works
• External vs. built-in caching
• MySQL Query Cache
• InnoDB Buffer Pool
• Rails SOMETHING
5
![Page 6: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/6.jpg)
Caching Architecture
Becomes
6
![Page 7: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/7.jpg)
Why Caching Works
7
![Page 8: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/8.jpg)
8
![Page 9: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/9.jpg)
9
![Page 10: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/10.jpg)
There are only two hard problems in Computer Science: cache invalidation, naming things, and off-by-one errors.
-- Martin Fowler
10
![Page 11: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/11.jpg)
Problems with Caching
• Cache Misses
• Thundering Herd
• Stale Data
• Warm-Up Times
• Overly-Aggressive Caching
• Poor Cache Design
11
![Page 12: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/12.jpg)
Cache Misses
Cache Hit: 1 OperationCache Miss: 3 Operations
12
![Page 13: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/13.jpg)
Thundering Herd
• Key TOP_10_VIDEOS expires @ 9:00
• Generating the K/V takes three seconds
• Page gets 100 req/s = 100*3 = 300 threads!
13
![Page 14: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/14.jpg)
Stale Data
• Must maintain consistency between the database and the cache from within the application
• Extremely difficult to validate correctness
14
![Page 15: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/15.jpg)
Cache Warm-Up
• All attempts to read from the cache are CACHE MISSES, which require three operations.
• This can result in a significant degradation of response time.
• Usually accompanied by a Thundering Herd
15
![Page 16: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/16.jpg)
Use Cases
• Sessions
• Popular Items
• Full Page Cache
• Profile Information
• User Preferences
• Tag Clouds
• Auto-suggest lists
• Relationships
• User Information
• Online Users
• Statistics
16
![Page 17: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/17.jpg)
Memcached
Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
17
![Page 18: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/18.jpg)
Redis
Redis is an open source, advanced key-value store. It is often referred to as a “data structure server” since keys can contain strings, hashes, lists, sets and sorted sets.
18
![Page 19: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/19.jpg)
In-Memory Means We’re Bound By RAM
19
![Page 20: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/20.jpg)
Consistent Hashing
• Each Key deterministically goes to a particular server. Think (KEY % SERVERS)
20
![Page 21: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/21.jpg)
Memcached
• Dead Simple & Battle Tested
• Fast
• Non-Blocking get()/set()
• Multi-Threaded
• Consistent Hashing
21
![Page 22: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/22.jpg)
Memcached Example
employee_id = 1234
employee_json = {
name => ‘Ryan Lowe’,
title => ‘Production Engineer’ }
set(employee_id, employee_json)
get(employee_id) [Returns employee_json]
22
![Page 23: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/23.jpg)
But I don’t want all the data
• What if I just want the name?
• 64 Bytes for the object vs. 10 for just the name :-(
• 6x network traffic
• More work for the application
• Fatter applications
23
![Page 24: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/24.jpg)
Redis
• Advanced Data Types
• Replication
• Persistence
• Usually Fast
• Very Cool Atomic Operations
24
![Page 25: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/25.jpg)
Redis: The Bad
• Single-Threaded
• Limited client support for consistent hashing
• Significant overhead for persistence (do be discussed later)
• Not widely deployed (compared to Memcached)
25
![Page 26: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/26.jpg)
Redis: Datatypes
• Strings (just like Memcached)
• Lists
• Sets
• Sorted Sets
• Hashes
26
![Page 27: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/27.jpg)
Redis: Lists
• Stored in sorted order
• Can push/pop
• Fast head/tail access
• Index access (yay)
27
![Page 28: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/28.jpg)
Redis: Lists
r.lpush(‘employees’, ‘Ryan Lowe’)
r.lpush(‘employees’, ‘Dave Apgar’)
r.lrange(‘employees’, 0, -1)
(‘Dave Apgar’, ‘Ryan Lowe’)
r.rpush(‘employees’, ‘Evan Miller’)
r.lrange(‘employees’, 0, -1)
(‘Dave Apgar’, ‘Ryan Lowe’, ‘Evan Miller’)
28
![Page 29: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/29.jpg)
Redis: Sets
• Un-ordered collections of strings
• Unique (no repeated members)
• diff, intersect, merge
29
![Page 30: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/30.jpg)
Redis: Sets
sadd(‘employees’, ‘Ryan Lowe’)
sadd(‘former_employees’, ‘Bryan Lowe’)
sdiff(‘former_employees’, ‘employees’)
(‘Ryan Lowe’,‘Bryan Lowe’)
30
![Page 31: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/31.jpg)
Redis: Sorted Sets
• Same as Sets but ordered by a score
31
![Page 32: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/32.jpg)
Redis: Hashesr.hset(‘employees’, ‘count’, 1234)
r.hset(‘employees’,‘females’, 1000)
r.hset(‘employees’,‘males’, 234)
hget(‘employees’,‘count’)
“1234”
hgetall(‘employees’)
{ ‘count’ => 1234,
‘females’ => 1000,
‘males’ => 234 }
32
![Page 33: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/33.jpg)
Memcached vs. RedisMemcached Redis
(multi)get ✓ ✓(multi)set ✓ ✓incr/decr ✓ ✓
delete ✓ ✓Expiration ✓ ✓
prepend/append ✓Range Queries ✓
Data Types! ✓Persistence (sorta) ✓
Multi-Threaded ✓Replication (sorta) ✓
33
![Page 34: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/34.jpg)
Instrumentation
• Redis: info
• Memcached: stats
• Both give system information, connections, hits, misses, etc.
• Graphite most of the metrics!!!
34
![Page 35: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/35.jpg)
Benchmarks
35
![Page 36: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/36.jpg)
About the Benchmarks
• 1 Hour
• Redis 2.6 & Memcached 1.4.5
• 64,000,000 Keys"KEY_#{i.to_s}"
• 51-Character Values(0...50).map{ ('a'..'z').to_a[rand(26)] }.join
36
![Page 37: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/37.jpg)
Redis Benchmarks
37
![Page 38: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/38.jpg)
Redis Set (1 Server)
0
1500
3000
4500
6000
7500
9000
10500
12000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
38
![Page 39: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/39.jpg)
Redis Set (1 Server)
0
1500
3000
4500
6000
7500
9000
10500
12000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
WTF?!
39
![Page 40: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/40.jpg)
Redis Set (1 Server)
0
2000
4000
6000
8000
10000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients
40
![Page 41: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/41.jpg)
Redis Set (2 Servers)
0
4000
8000
12000
16000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
41
![Page 42: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/42.jpg)
Redis Set (2 Servers)
0
4000
8000
12000
16000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
WTF?!
42
![Page 43: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/43.jpg)
Redis Set (4 Servers)
0
4000
8000
12000
16000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
43
![Page 44: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/44.jpg)
Redis Set (8 Servers)
0
4000
8000
12000
16000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
44
![Page 45: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/45.jpg)
Hash Ring Balance (%)
0
50
100
Redis Memcached
Server 1 Server 2
45
![Page 46: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/46.jpg)
Hash Ring Balance (%)
0
25
50
Redis Memcached
Server 1 Server 2 Server 3 Server 4
46
![Page 47: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/47.jpg)
Hash Ring Balance (%)
0
12.5
25
Redis Memcached
Server 1 Server 2 Server 3 Server 4 Server 5Server 6 Server 7 Server 8
47
![Page 48: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/48.jpg)
Redis Get (1 Server)
0
25000
50000
75000
100000
125000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
48
![Page 49: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/49.jpg)
Redis Get (2 Servers)
0
25000
50000
75000
100000
125000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
49
![Page 50: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/50.jpg)
Redis Get (4 Servers)
0
25000
50000
75000
100000
125000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
50
![Page 51: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/51.jpg)
Redis Get (8 Servers)
0
25000
50000
75000
100000
125000
1 Client 2 Clients 4 Clients 8 Clients12 Clients 16 Clients 24 Clients 32 Clients
51
![Page 52: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/52.jpg)
The Cost of Persistence
4000
6000
8000
10000
12000
Redis No Persistence Redis BGSAVE (FIO) Redis AOF
52
![Page 53: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/53.jpg)
Redis & MemcachedBenchmarks
53
![Page 54: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/54.jpg)
Set Operations (1 Server, 24 Clients)
9300
9475
9650
9825
10000
Memcached Redis
54
![Page 55: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/55.jpg)
Get Operations(1 Server, 24 Clients)
80000
92500
105000
117500
130000
Memcached Redis
55
![Page 56: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/56.jpg)
Set Operations (2 Servers, 24 Clients)
8000
9250
10500
11750
13000
Memcached Redis
56
![Page 57: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/57.jpg)
Get Operations (2 Servers, 24 Clients)
8000
41000
74000
107000
140000
Memcached Redis
57
![Page 58: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/58.jpg)
Set Operations (4 Servers, 24 Clients)
8000
9250
10500
11750
13000
Memcached Redis
58
![Page 59: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/59.jpg)
Get Operations (4 Servers, 24 Clients)
8000
41000
74000
107000
140000
Memcached Redis
59
![Page 60: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/60.jpg)
Set Operations (8 Servers, 24 Clients)
8000
9000
10000
11000
12000
Memcached Redis
60
![Page 61: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/61.jpg)
Get Operations (8 Servers, 24 Clients)
8000
43500
79000
114500
150000
Memcached Redis
61
![Page 62: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/62.jpg)
Conclusions
• Redis inconsistent under heavy load
• We need more benchmarks!
• (Redis) Datatype-specific
• Big Memory
• (Redis) Big Keys
62
![Page 63: Caching Memcached vs. Redis - files.meetup.comfiles.meetup.com/107604/redis_memcached_pdf.pdf · Caching Memcached vs. Redis San Francisco MySQL Meetup Ryan Lowe Erin O’Neill 1](https://reader030.fdocuments.net/reader030/viewer/2022040419/5dd0fbe6d6be591ccb63a79c/html5/thumbnails/63.jpg)
Questions?
63