![Page 1: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/1.jpg)
The Beauty of Simplicity
Mastering Database Design with
![Page 2: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/2.jpg)
![Page 3: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/3.jpg)
![Page 4: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/4.jpg)
What is this talk about?
![Page 6: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/6.jpg)
1 2 3
![Page 7: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/7.jpg)
1 2 3Basic Redis API
![Page 8: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/8.jpg)
1 2 3Simple Use Cases
![Page 9: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/9.jpg)
1 2 3Learning from Redis
![Page 10: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/10.jpg)
![Page 11: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/11.jpg)
SET the-answer 42OK
![Page 12: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/12.jpg)
GET the-answer“42”
![Page 13: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/13.jpg)
The End
![Page 14: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/14.jpg)
![Page 15: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/15.jpg)
42 24
![Page 17: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/17.jpg)
ListsRPUSH primes 2(integer) 1RPUSH primes 3(integer) 2RPUSH primes 5(integer) 3
![Page 18: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/18.jpg)
Lists
LRANGE primes 0 -11) “2”2) “3”3) “5”
![Page 19: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/19.jpg)
SetsSADD words foo(integer) 1SADD words bar(integer) 1SADD words foo(integer) 0
![Page 20: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/20.jpg)
Sets
SMEMBERS words1) “foo”2) “bar”
![Page 21: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/21.jpg)
Sorted SetsZINCRBY words 1 foo“1”ZINCRBY words 1 bar“1”ZINCRBY words 1 foo“2”
![Page 22: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/22.jpg)
Sorted Sets
ZREVRANGE words 0 -1 WITHSCORES1) “foo”2) “2”3) “bar”4) “1”
![Page 23: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/23.jpg)
Hashes
HSET person first_name Ryan(integer) 1HSET person last_name Briones(integer) 1
![Page 24: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/24.jpg)
Hashes
HGETALL person1) “first_name”2) “Ryan”3) “last_name”4) “Briones”
![Page 25: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/25.jpg)
QueuesRPUSH queue foo(integer) 1RPUSH queue bar(integer) 2
LPOP queue“1”
![Page 26: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/26.jpg)
Set IntersectionSADD fb_friends 1234567(integer) 1SADD fb_friends 1234568(integer) 1SADD purchasers 1234567(integer) 1
SINTER fb_friends purchasers1) 1234567
![Page 27: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/27.jpg)
Chat ServerZADD room 1307420357571.96 {:msg => “Hello Mike”}
(integer) 1ZADD room 1307420462678.8{:msg => “Hello Joe”}
(integer) 1ZADD room 1307420496256.58{:msg => “Hello World”}
(integer) 1
![Page 28: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/28.jpg)
Chat Server
ZREVRANGE room 0 301) {...}2) {...}
ZRANGEBYSCORE room1307420357571.96 +inf
1) {...}
![Page 29: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/29.jpg)
![Page 30: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/30.jpg)
Application Data in Redis
![Page 31: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/31.jpg)
Data in RDBMS
id first_name last_name login1 Ryan Briones ryanbriones
... ... ... ...
![Page 32: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/32.jpg)
Data in Redis
INCR users:uids“1”
![Page 33: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/33.jpg)
id first_name last_name login1 Ryan Briones ryanbriones
... ... ... ...
Data in RDBMS
![Page 34: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/34.jpg)
INCR users:uids“1”
SET users:1:first_name RyanOK
SET users:1:last_name BrionesOK
SET users:1:login ryanbrionesOK
Data in Redis
![Page 35: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/35.jpg)
id first_name last_name login1 Ryan Briones ryanbriones
... ... ... ...
Data in RDBMS
![Page 36: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/36.jpg)
KEYS users:1:*1) users:1:first_name2) users:1:last_name3) users:1:login
GET users:1:first_name“Ryan”
GET users:1:last_name“Briones”
GET users:1:login“ryanbriones”
Data in Redis
![Page 37: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/37.jpg)
SELECT * FROM users;
Data in RDBMS
![Page 38: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/38.jpg)
SADD users:all 1(integer) 1
SMEMBERS users:all1) 12) ...
Data in Redis
![Page 39: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/39.jpg)
users:uids 1users:1:first_name Ryanusers:1:last_name Briones
users:1:login ryanbrionesusers:all {1}
Data in Redis
![Page 40: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/40.jpg)
SET users:login:ryanbriones:uid 1OK
GET users:login:ryanbriones:uid“1”
Data in Redis
![Page 41: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/41.jpg)
SELECT * FROM users ORDER BY last_name DESC;
Data in RDBMS
![Page 42: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/42.jpg)
users:uids 1users:1:first_name Ryanusers:1:last_name Briones
users:1:login ryanbrionesusers:all {1}
users:login:ryanbriones:uid 1
Data in Redis
![Page 43: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/43.jpg)
SET users:last_name:Briones:uid 100OK
SADD users_last_names BrionesOK
SET users:last_name:Andrews:uid 200OK
SADD users_last_names AndrewsOK
SORT users_last_names ALPHA DESC BY * GET users:last_name:*:uid
1) 1002) 200
Data in Redis1
2
![Page 44: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/44.jpg)
Data in RedisSORT users_last_names ALPHA DESC BY * GET users:last_name:*:uidSTORE users_uid_by_last_name_desc
(integer) 2
TYPE users_uid_by_last_name_desclist
LRANGE users_uid_by_last_name_desc 0 -11) 2002) 100
![Page 45: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/45.jpg)
EXPIRE users_uid_by_last_name_desc 86400(integer) 1
Data in Redis
![Page 46: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/46.jpg)
Data in RDBMS
id first_name last_name login1 Ryan Briones ryanbriones
... ... ... ...
id title body permalink user_id10 Redis Rocks ... redis-rocks 1
... ... ... ... ...
![Page 47: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/47.jpg)
SET posts:10:title “Redis Rocks”OKSET posts:10:body “Lorem ipsum..”OKSET posts:10:permalink “redis-rocks”OK
SET posts:10:user_id 1OKSET posts:permalink:redis-rocks:id 10OKSADD posts:all 10OK
Data in Redis
![Page 48: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/48.jpg)
SET posts:10:title “Redis Rocks”OKSET posts:10:body “Lorem ipsum..”OKSET posts:10:permalink “redis-rocks”OK
SET posts:10:user_id 1OKSET posts:permalink:redis-rocks:id 10OKSADD posts:all 10OK
LPUSH users:1:posts 10OK
Data in Redis
![Page 49: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/49.jpg)
SET posts:10:title “Redis Rocks”OKSET posts:10:body “Lorem ipsum..”OKSET posts:10:permalink “redis-rocks”OK
SET posts:10:user_id 1OKSET posts:permalink:redis-rocks:id 10OKSADD posts:all 10OK
ZADD users:1:posts 1307463108973.28 10OK
Data in Redis
![Page 50: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/50.jpg)
Data in Redis
SORT user:1:posts DESCGET posts:*:titleGET posts:*:permalink
1) “Redis Rocks”2) redis-rocks
![Page 51: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/51.jpg)
AOF Disk Persistence
Lua Scripting
Pub-Sub
Simple Transactions
Cluster/DR
Replication
Sharding
![Page 52: The Beauty of Simplicity: Mastering Database Design with Redis](https://reader038.vdocuments.us/reader038/viewer/2022110118/554f77dfb4c905d25b8b45cd/html5/thumbnails/52.jpg)
Ryan Briones
work for//obtiva
@ryanbriones