10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use...
Transcript of 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use...
![Page 1: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/1.jpg)
10 Ways to Scale with RedisIMCSUMMIT - NOVEMBER 2019 | DAVE NIELSEN
![Page 2: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/2.jpg)
In-memory Multi-model Database
2
![Page 3: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/3.jpg)
Optionally Persistent
3
![Page 4: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/4.jpg)
4
50,420,000
41,190,000
30,200,000
21,120,000
11,380,000
5,020,000
3 6 12 18 24 26
ops/
sec
# of nodes
Cluster Throughput (@ 1 msec Latency)
![Page 5: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/5.jpg)
5
Developers +
Redis
![Page 6: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/6.jpg)
Redis Top Differentiators
Simplicity Extensibility PerformanceNoSQL Benchmark
1
Redis Data Structures
2 3
Redis Modules
6
Lists
Hashes
Bitmaps
Strings
Bit field
Streams
Hyperloglog
Sorted Sets
Sets
Geospatial Indexes
![Page 7: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/7.jpg)
Performance: The Most Powerful Database
Highest Throughput at Lowest Latency in High Volume of Writes Scenario
Least Servers Needed to Deliver 1 Million Writes/Sec
Benchmarks performed by Avalon Consulting Group Benchmarks published in the Google blog
7
1
Serv
ers u
sed
to a
chie
ve 1
M w
rites
/sec
10k
20k
30k
40k
0
100
200
300
400
500
0Couchbase Cassandra Datastax Redise
394.42 381.31 372.31
71.22App
licat
ion
requ
ests
/sec
Latency in Milliseconds
Applica!on Latency (msec)
CouchbaseCassandra Redise
$14,832$371,040$2,226,216
25X150X
ANNUAL COST
COST COMPAREDTO REDISe
350
300
250
200
150
100
50
0
![Page 8: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/8.jpg)
“REDIS IS FULL OF DATA STRUCTURES!”
2 Simplicity: Data Structures - Redis’ Building Blocks
![Page 9: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/9.jpg)
Simplicity: Redis Data Structures – ’Lego’ Building Blocks
Lists[ A → B → C → D → E ]
Hashes{ A: “foo”, B: “bar”, C: “baz” }
Bitmaps0011010101100111001010
Strings"I'm a Plain Text String!”
Bit field{23334}{112345569}{766538}
Key
9
2
”Retrieve the e-mail address of the user with the highest bid in an auction that started on July 24th at 11:00pm PST” ZREVRANGE 07242015_2300 0 0=
Streamsà{id1=time1.seq1(A:“xyz”, B:“cdf”),
d2=time2.seq2(D:“abc”, )}à
Hyperloglog00110101 11001110
Sorted Sets{ A: 0.1, B: 0.3, C: 100 }
Sets{ A , B , C , D , E }
Geospatial Indexes{ A: (51.5, 0.12), B: (32.1, 34.7) }
![Page 10: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/10.jpg)
• Add-ons that use a Redis API to seamlessly support additional use cases and data structures.
• Enjoy Redis’ simplicity, super high performance, infinite scalability and high availability.
Extensibility: Modules Extend Redis Infinitely
• Any C/C++/Go program can become a Module and run on Redis.
• Leverage existing data structures or introduce new ones.
• Can be used by anyone; Redis Enterprise Modules are tested and certified by Redis Labs.
• Turn Redis into a Multi-Model database
10
3
![Page 11: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/11.jpg)
• RediSearch
• RedisTimerseries
• ReJSON
• Rebloom
• RedisGraph
• Neural-Redis
• Redis-Cell
• Redis-Tdigest
• Redis-ML
Extensibility: Modules Extend Redis Infinitely
11
3
• Redis-Rating
• Redis-Cuckoofilter
• Cthulhu
• Redis Snowflake
• redis-roaring
• Session Gate
• ReDe
• TopK
• countminsketch
![Page 12: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/12.jpg)
Deep Dive
![Page 13: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/13.jpg)
Real Time Analytics
User Session Store
Real Time Data Ingest
High Speed Transactions
Job & Queue Management
Time Series Data Complex Statistical Analysis
Notifications Distributed Lock Caching
Geospatial Data Streaming Data Machine Learning
13
Very Large Data Sets Search
![Page 14: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/14.jpg)
Manage Session Stores w/ Redis Hash
![Page 15: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/15.jpg)
• An chunk of data that is connected to one “user” of a service– ”user” can be a simple visitor – or proper user with an account
• Often persisted between client and server by a token in a cookie*– Cookie is given by server, stored by browser– Client sends that cookie back to the server on subsequent requests– Server associates that token with data
• Often the most frequently used data by that user– Data that is specific to the user– Data that is required for rendering or common use
• Often ephemeral and duplicated
A user session store is…
![Page 16: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/16.jpg)
Session Storage Uses Cases
Traditional• Username• Preferences• Name• “Stateful” data
Intelligent• Traditional +• Notifications• Past behavior
– content surfacing– analytical information– personalization
![Page 17: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/17.jpg)
In a simple world
Internet Server Database
![Page 18: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/18.jpg)
Good problems
Internet Server Database
Traffic Grows… Struggles
![Page 19: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/19.jpg)
Good solution
Internet Server Database
performance restored
Session storage on the server
![Page 20: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/20.jpg)
More good problems
Internet Server Database
Session storage on the server
Struggling
![Page 21: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/21.jpg)
Problematic Solutions
Internet Server Database
Session storage on the server
Load balanced
Session storage on the server
![Page 22: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/22.jpg)
Multiple Servers + On-server Sessions?
Server DatabaseRobin
Server #1 – Hello Robin!
![Page 23: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/23.jpg)
Multiple Servers + On-server Sessions?
Server DatabaseRobin
Server #3 – Hello ????
![Page 24: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/24.jpg)
Better solution
Internet Server Database
Load balanced
RedisSession Storage
![Page 25: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/25.jpg)
User Session Store
• The Problem
• Maintain session state across multiple servers
• Multiple session variables
• High speed/low latency required
Why Redis Rocks
• Hashes are perfect for this!• HSET lets you save session
variables as key/value pairs • HGET to retrieve values• HINCRBY to increment any
field within the hash structure
![Page 26: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/26.jpg)
Redis Hashes Example - https://redis.io/commands#hash
userid 8754
name dave
ip 10:20:104:31
hits 1
lastpage home
hash key: usersession:1
HMSET usersession:1 userid 8754 name dave ip 10:20:104:31 hits 1 HMGET usersession:1 userid name ip hitsHINCRBY usersession:1 hits 1
HSET usersession:1 lastpage “home”HGET usersession:1 lastpageHDEL usersession:1 lastpage
Hashes store a mapping of keys to values – like a dictionary or associative array – but faster
EXPIRE usersession:1 10
DEL usersession:1
or
![Page 27: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/27.jpg)
Managing Queues w/ Redis Lists
![Page 28: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/28.jpg)
Managing Queues of Work
• The Problem
• Tasks need to be worked on asynchto reduce block/wait times
• Lots of items to be worked on
• Assign items to worker process and remove from queue at the same time
• Similar to buffering high speed data-ingestion
Why Redis Rocks
• Lists are perfect for this!• LPUSH, RPUSH add values at
beginning or end of queue• RPOPLPUSH – pops an item
from one queue and pushes it to another queue
![Page 29: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/29.jpg)
Redis Lists Example - https://redis.io/commands#list
LPUSH queue1 orangeLPUSH queue1 greenLPUSH queue1 blueRPUSH queue1 red
LPUSH adds values to head of list
RPUSH adds value to tail of list
blue green orange .. .. red
![Page 30: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/30.jpg)
Redis Lists Example - https://redis.io/commands#list
blue green orange .. ..
RPOPLPUSH queue1 queue2
red
LPUSH queue1 orangeLPUSH queue1 greenLPUSH queue1 blueRPUSH queue1 red
RPOPLPUSH pops a value from one list and pushes it to another list
LLEN queue1LINDEX queue1 0LRANGE queue1 0 2
![Page 31: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/31.jpg)
Managing Tags w/ Redis Sets
![Page 32: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/32.jpg)
Managing Tags Example
• The Problem
• Loads of tags
• Find items with particular tags
• High speed/low latency required
Also used for:
• Recommending Similar Purchases
• Recommending Similar Posts
Why Redis Rocks• Sets are unique collections of strings • SADD to add tags to each article• SISMEMBER to check if an article has
a given tag• SMEMBERS to get all the tags for an
article• SINTER to find which articles are
tagged with tag1, tag2 and tag77
![Page 33: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/33.jpg)
Redis Sets Example – https://redis.io/commands#set
tag1 tag22 tag24 tag28
SADD article:1 tag:1 tag:22 tag:24 tag:28SADD tag:1 article:1 SADD tag:1 article:3SADD tag:2 article:22SADD tag:2 article:14SADD tag:2 article:3
SISMEMBER article:1 tag:1SMEMBERS article:1
article 1
article 1 article 3 ….
tag 1
article 3 article 14 article 22 ..
tag 2
SINTER tag:1 tag:2
![Page 34: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/34.jpg)
Managing Leaderboards w/ Redis Sorted Sets
![Page 35: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/35.jpg)
Leaderboard with Sorted Sets Example
• The Problem
• MANY users playing a game or collecting points
• Display real-time leaderboard.
• Who is your nearest competition
• Disk-based DB is too slow
Why Redis Rocks
• Sorted Sets are perfect!• Automatically keeps list of
users sorted by score • ZADD to add/update• ZRANGE, ZREVRANGE to get
user• ZRANK will get any users
rank instantaneously
![Page 36: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/36.jpg)
Redis Sorted Sets - https://redis.io/commands#sorted_set
ZADD game:1 10000 id:1 ZADD game:1 21000 id:2ZADD game:1 34000 id:3 ZADD game:1 35000 id:4ZADD game:1 44000 id:3or
ZINCRBY game:1 10000 id:3
34000 id:3
35000 id:4
21000 id:2
10000 id:1
ZREVRANGE game:1 0 0ZREVRANGE game:1 0 1 WITHSCORES
44000 id:3
+ 10000id:3
![Page 37: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/37.jpg)
Searching within a Geospatial Index
![Page 38: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/38.jpg)
Search within a Geographic Area Example
• The Problem
• MANY moving items within a geographical area
• Display real-time locations.
• What is the nearest item NOW
• SQL Queries are too slow
Why Redis Rocks
• GEOADD to add an item• Redis Geo uses Sorted Sets
so related Z-commands such as ZRANGE & ZREM are useful too
• GEODIST to find distance between to points
• GEORADIUS to find all points within an area
![Page 39: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/39.jpg)
Redis Geospatial Index - https://redis.io/commands#geo
GEOADD locations 37.25 13.916667 “Campobello di Licata” GEOADD locations 41.9 12.5 RomeGEOADD locations -122.375 37.618889 SFOGEOADD locations -122.3931400 37.7681300 RedisconfZRANGE locations 0 -1
Rome41.9, 12.5
Campobello di Licata37.25, 13.916667
SFO-122.375 37.618889
RedisConf-122.3931400 37.7681300
GEODIST locations ”Campobello di Licata” Redisconf miGEOPOS locations Redisconf SFO GEOHASH locations RedisconfZSCORE locations RedisconfGEORADIUS locations -122.41942 37.77493 15 miGEORADIUSBYMEMBER locations Redisconf 15 mi WITHDIST ASCZREM locations SFO
![Page 40: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/40.jpg)
Fire and Forget with Pub/Sub
![Page 41: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/41.jpg)
Fire and Forget with Pub/Sub
• The Problem
• Communicate with clients in real-time
Why Redis Rocks
• PUBLISH• SUBSCRIBE
![Page 42: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/42.jpg)
Pub/Sub Demo: https://redis.io/commands#pubsub
$ redis-server$ keys *$ flushall
1. PUBLISH channel1 "hi 1" 4. PUBLISH channel1 "hello 2"6. PUBLISH channel1 "hellooo 3"9. PUBLISH channel1 "hello world 4"
3. SUBSCRIBE channel12. SUBSCRIBE channel15. CONTROL-C7. redis-cli8. SUBSCRIBE channel1
Will receive:4. hello 29. hello world 4
Will receive:4. hello 26. hellooo 39. hello world 4
Server Setup Publisher - Steps
Subscriber 1 - Steps Subscriber 2 - Steps
![Page 43: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/43.jpg)
Reliable messaging with Redis Streams
![Page 44: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/44.jpg)
Reliable messaging with Redis Streams
• The Problem
• Communicate with clients in real-time without missing data
Why Redis Rocks
• XADD• XREAD
![Page 45: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/45.jpg)
Redis Streams Demo - https://redis.io/commands#stream
redis-serverkeys *flushall
1. XADD mystream1 * greeting "hello 1"5. XADD mystream1 * greeting "hello 2"8. XADD mystream1 * greeting ”hello 3"
3. XREAD COUNT 10 STREAMS mystream1 07. XREAD COUNT 10 STREAMS mystream1 010. XREAD COUNT 10 STREAMS mystream1 0
2. XREAD COUNT 10 STREAMS mystream1 04. CONTROL-C6. redis-cli9. XREAD COUNT 10 STREAMS mystream1 0
Will receive:1. hello 15. hello 28. hello 3
Will receive:1. hello 15. hello 28. hello 3
Server Setup Producer - Steps
Consumer 1 - Steps Consumer 2 - Steps
![Page 46: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/46.jpg)
More examples
![Page 47: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/47.jpg)
47
Redis Data Structures
1. Strings - Cache SQL queries, pages, fast data2. Bitmaps - Store 1s/0s (Online/Offline) like Pinterest
3. Bit Fields - Store arrays of complex numbers
4. Hashes - Store record-like info (user sessions, favorites, etc.)
5. Lists - Store ordered data (for ingesting data)6. Sets - Store unique/unordered data (tags, unique IPs, etc.)
7. Sorted Sets - Store real-time sorted data like a MMPORG Leaderboard
8. Geospacial Indexes - Store real-time location (Uber, Lyft, etc.)
9. Hyperloglog - Store probabilistic data (Google Search count)
10. Streams - Store and share event data (similar to Kafka)
Lists
Hashes
Bitmaps
Strings
Bit fields
Streams
Hyperloglog
Sorted Sets
Sets
Geospatial Indexes
![Page 48: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/48.jpg)
In-memory, Keys & Data Structures
![Page 49: 10 Ways to Scale with Redis• Add-ons that use a Redis API to seamlessly support additional use cases and data structures. • Enjoy Redis’ simplicity, super high performance, infinite](https://reader033.fdocuments.in/reader033/viewer/2022042020/5e772ad763aee94dad64b3fe/html5/thumbnails/49.jpg)
Redis Keys – Ground Rules
• It’s all about the keys • No Querying • No Indexes• No Schemas• Keys must be unique (like primary keys in an SQL database)