SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Microservices and Redis: A Match made in Heaven
April 26th 2018
SUPERCHARGE MICROSERVICES WITH REDIS
Vijay Vangapandu
Software Architect
https://www.linkedin.com/in/vijayvangapandu
• Our comprehensive & revealing Relationship Questionnaire
• 29 Dimensions® of Compatibility
• 15+ million matches per day globally
(20+ billion since inception)
• 100+ thousand photos uploaded per day
• 1+ million communications per day
Who is eharmony?
SUPERCHARGE MICROSERVICES WITH REDIS
eharmony core product
SUPERCHARGE MICROSERVICES WITH REDIS
eharmony core product
SUPERCHARGE MICROSERVICES WITH REDIS
Product Experience
SUPERCHARGE MICROSERVICES WITH REDIS
COMPATIBILITY AFFINITY SELF-SELECT PROFILE
Product Experience
SUPERCHARGE MICROSERVICES WITH REDIS
Match Listing CommunicationMatch Profile Dashboard
A microservice is a single self-contained unit which, together with
many others, makes up a large application.
Microservices
SUPERCHARGE MICROSERVICES WITH REDIS
Benefits Of Microservices
Developer Independence
Small teams work in parallel and can iterate faster.
Eliminates any long-term commitment to a
technology stack.
Isolation and resilience
If a component dies, you spin up another while the
rest of the application continues to function.
Scalability
Smaller components take up fewer resources and
can be scaled to meet increasing demand of that
component only.
Relationship to the business
Microservice architectures are split along business
domain boundaries, increasing independence and
understanding across the organization
SUPERCHARGE MICROSERVICES WITH REDIS
Benefits Of Microservices
SUPERCHARGE MICROSERVICES WITH REDIS
1. Number	of	deployments	per	day
2. Time	To	Market	the	new	features
3. Service	availability
4. Number	of	production	issues
Continues	deployment	
integration	with	slack
SUPERCHARGE MICROSERVICES WITH REDIS
Login Public API (Gateway)
Profile Matches Comm Badging NewsfeedPhotos Config
Match Profile DashboardInbox
Message bus
Nodejs App Stack
Eharmony Microservices Architecture
CMP User ActivityUser Pairings Scorer/Modeling
Event ListenerMatching Batch Jobs
User ServiceMatch Maker
Aggregation	Services
Core	Services
Persistance
Matching
SUPERCHARGE MICROSERVICES WITH REDIS
Public API (Gateway)
Profile Matches
Communication
BadgingPhotos
Message bus
Communication flow between services
Dashboard
Newsfeed
Match Profile
Matching services/jobs
• Redis is an open source (BSD licensed),
• In-memory data structure key-value store
• Can be used as a database, cache and message broker.
• Primary – Replica architecture
• Provides high availability via Redis Sentinel
• Automatic partitioning with Redis Cluster
• Rich set of operations on various data structures
• Client libraries for almost all popular languages
• Large adoption and great community support
• Single threaded and supports atomic operations
What is redis?
SUPERCHARGE MICROSERVICES WITH REDIS
Redis data structures
Strings
Binary-safe strings is most commonly used data
structure to store simple key-value data.
Lists
Collection of string elements sorted in insertion
order (linked lists).
Sets
Collection of unique, unsorted string elements.
Sorted sets
Similar to set with every element associated to
floating number value, called SCORE. Supports
range queries.
SUPERCHARGE MICROSERVICES WITH REDIS
Hashes
Which are maps composed of fields associated with
values. Both the field and value are strings.
HyperLogLogs
Probabilistic data structure used in order to count
unique things.
Redis deployment options
SUPERCHARGE MICROSERVICES WITH REDIS
M
S SSnapshot/AOF
• Persistence
• Snapshot for periodic backup
• AOF for every write ( more reliable)
• Replication
• Data will be replicated to read-only slaves
• Failover : Manual
M
S S
• Persistence
• Snapshot for periodic backup
• AOF for every write ( more reliable)
• Replication
• Data will be replicated to read-only slaves
• Failover :
• Automatic failover through sentinel
Sent
inel
Sent
inel
Sent
inel
S1
• Persistence
• Snapshot for periodic backup
• AOF for every write ( more reliable)
• Flash optimized storage with redis labs cluster
• Replication
• Data will be replicated to read-only slaves
• Failover :
• Automatic failover through cluster
M2
M1
S2
Keys	A	- N
Keys	O	- Z
SUPERCHARGE MICROSERVICES WITH REDIS
Redis use-cases @eharmony
SUPERCHARGE MICROSERVICES WITH REDIS
Login Public API (Gateway)
Profile Matches Comm Badging NewsfeedPhotos
Nodejs App Stack
Redis as auth store
Refresh tokens Access tokens
Redis as auth store
SUPERCHARGE MICROSERVICES WITH REDIS
• Simple string key-value based store
• Token as key and Auth object as value
• Access token has shorter TTL
• Refresh has longer TTL
• JEDIS client library ( SpringData)
• Leveraging RedisLabs replication
Redis as auth store
SUPERCHARGE MICROSERVICES WITH REDIS
JedisPoolConfig poolConfig = new JedisPoolConfig();
JedisConnectionFactory cf = new JedisConnectionFactory();
cf.setHostName({hostname}); cf.setPort({port});
cf.setPoolConfig(poolConfig );
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(cf);
redisTemplate.opsForValue(). set(tokenKey, accesstoken, duration, CACHE_TTL_UNITS);
redisAccessTokenTemplate.opsForValue().get(tokenKey);
redisAccessTokenTemplate.delete(accessToken.getTokenId());
-bash-4.1$ ./redis-cli -p XXXX
127.0.0.1:XXXX> get "661295e5-0e4c-XX”
"{"atVal":"661295e5-0e4c-XX",""authorities":[...}”
127.0.0.1:XXXX> ttl "661295e5-0e4c-XX”
(integer) 132888
Client Configuration
Operations
Redis CLI
Redis as auth store - Performance
SUPERCHARGE MICROSERVICES WITH REDIS
Matching
User
Service
SUPERCHARGE MICROSERVICES WITH REDIS
Message bus
Redis as matching user store
CMP User Activity
User TimelinePairingsMatch maker
Scorer
Modeling
FeatureX
User Store
MAS
Matching Batch Jobs Matching Event Listener
SUPERCHARGE MICROSERVICES WITH REDIS
• Hashes data structure
• Data stored in binrary format - Protocol buffers
• UserId as key
• Various user data sections as categories for Map keys
• Ex: User Info, Photos, Activity
• JEDIS client library ( SpringData)
• Leveragin RedisLabs cluster with 6 shards
• Leveraging RedisLabs Flash storage
Redis as matching user store
Redis as matching user store
SUPERCHARGE MICROSERVICES WITH REDIS
public	Map<String,	V>	fetchValues(final	Iterable<String>	keys)	 {	
List	results	=	redisTemplate.executePipelined(new	SessionCallback<Object>()	{
public	Object	execute(RedisOperations operations)	{
Iterator	var2	=	keys.iterator();
while(var2.hasNext())	{
operations.opsForHash().entries((String)var2.next());
}
}});
operations.watch(key);
byte[]	hashValue =	(byte[])hashOperations.get(key,	hashKey);
T	value	=	valueSerializer.deserialize(hashKey,	hashValue);
value	=	merger.merge(key,	value);
byte[]	mergedHashValue =	valueSerializer.serialize(hashKey,	value);
operations.multi();
hashOperations.put(key,	hashKey,	mergedHashValue);
List<Object>	execResult =	operations.exec();
//deserialize to	proto...
if(hashKey.equalsIgnoreCase("user-activity"))
return ActivityProto.parseFrom(hashValue);
Fetch Entries in batch
Partial updates
”user:123”:
“activity”:	{},
”profile”:{},
“photos”:{},
“questionnaire”:{},
”user:124”:
“activity”:	{},
”profile”:{},
“photos”:{},
“questionnaire”:{},
SUPERCHARGE MICROSERVICES WITH REDIS
Public API (Gateway)
Profile Matches Comm
Badge API
Photos
Redis as badges store
Badge Store
Badge
Processor
Message bus
Redis as badges store
SUPERCHARGE MICROSERVICES WITH REDIS
• Hashes data structure
• Leveraging atomic counters
• UserId as key
• Various badge categories as Map keys
• Ex: Photos, Matches, Activity
• Accumulators as values
• JEDIS client library ( SpringData)
• Leveraging RedisLabs Flash storage
Redis as Badges Store
SUPERCHARGE MICROSERVICES WITH REDIS
HashOperations<String,	String,	String>	hashOps =	redisTemplate.opsForHash();
hashOps.increment(“user:123”,	“matches”,	1	);
hashOps.increment(“user:123”,	“favorite”,	-1	*	decrementByCount);
hashOps.	delete(“user:123”,	“matches”);
127.0.0.1:XXXX> hincrby user:123	matches	10
127.0.0.1:XXXX> hincrby user:123	favorite	-2
127.0.0.1:XXXX> hdel user:231	favorite	
Operations
Redis CLI
“user:123”:
“matches”:24,
“communication”:2,
“photos-new”: 5
“favorite”: 3
“user:231”:
“matches”:3,
“communication”:1,
“photos-new”: 0
“favorite”: 2
HINCRBY
Redis as Badges Store
SUPERCHARGE MICROSERVICES WITH REDIS
port 5002
sentinel monitor master-badeges {masternode ip} {port} 1
sentinel down-after-milliseconds master-badges 10000
sentinel failover-timeout master-badges 20000
sentinel config-epoch master-badges 94
# Generated by CONFIG REWRITE
sentinel leader-epoch master-badges 96
sentinel known-slave master-badges {slavenode ip} {port}
sentinel known-sentinel master-badges {sentinel2} 5002 eb42be8
sentinel known-sentinel master-badges {sentinel3} 5002 9243503
sentinel current-epoch 96
Sentinel Configuration
M
S S
• Persistence
• Snapshot for periodic backup
• AOF for every write ( more reliable)
• Replication
• Data will be replicated to read-only slaves
• Failover :
• Automatic failover through sentinel
Sent
inel
Sent
inel
Sent
inel
SUPERCHARGE MICROSERVICES WITH REDIS
Public API (Gateway)
Match Save
Service
Redis as speed store in lambda architecture
Delta Store
Message bus
Match Query
Service
Batch Store
Match Events
Processor
Match creation jobs
SUPERCHARGE MICROSERVICES WITH REDIS
CDN
Redis sorted sets for Security
Delta Store
Gateway/Router
Profile Matches Comm NewsfeedPhotos
Admin
Login
Refresh tokens Access tokensAccess Tokens Refresh Tokens
Block/unblock
IP/User Agent
Logs
Aggregates
Block Access
Block Access
Redis sorted sets for Security
SUPERCHARGE MICROSERVICES WITH REDIS
• Connecting redis from spark jobs
• Leveraging Sorted Sets to find the top N anomalies to block
• Single threaded atomic operations better suited to store accumulators from spark
• Leveraging kafka window operation for streaming
• JEDIS client library ( SpringData)
• Leveraging sentinel for auto failover
Redis sorted sets for security
SUPERCHARGE MICROSERVICES WITH REDIS
ZSetOperations<String,	String>	zsetOps =	redisTemplate.opsForZSet();
Double	score1	=	zsetOps.incrementScore("ipList",	"10.23.43.11",	67);
Double	score1	=	zsetOps.incrementScore("ipList",	"121.23.54.1",	20);
Double	score1	=	zsetOps.incrementScore("ipList",	”210.2.4.34",	345);
Set<String>	annomilies =	zsetOps.rangeByScore("ip-blacklist",	50,	200);
Results:
10.23.43.11,	210.2.4.34
127.0.0.1:XXXX> zadd ip-blacklist	10		"10.2.3.4”
127.0.0.1:XXXX> zadd ip-blacklist	200		"100.23.45.67"
127.0.0.1:XXXX> zrange ip-blacklist		0	-1
1) "10.2.3.4”
2) "100.23.45.67"
Operations
Redis CLI
import	redis.clients.jedis.{Jedis,	ScanParams,	ScanResult}
jedis.zadd(key,	dataToStore)
jedis.watch(key)	val transaction	=	jedis.multi()
transaction.hset(key,	valueData.value,	JsonUtil.toJson(valueData))
transaction.expire(key,	redisTtl)
transaction.exec()
val result:List[ValueData]=	jedis
.zrangeByScoreWithScores(key,	minScore,	maxScore)					
.asScala.toList
.map((tuple:	Tuple)	=>	JsonUtil.toValueData(tuple.getElement))
Java Scala
Redis sorted sets for security
SUPERCHARGE MICROSERVICES WITH REDIS
API BOT mitigation
SUPERCHARGE MICROSERVICES WITH REDIS
Redis pub/sub for configurations
Config Service
ServiceServiceServiceService ServiceServiceServiceService ServiceServiceServiceService
Redis Pub/Sub
Gateway
Many more use cases…
SUPERCHARGE MICROSERVICES WITH REDIS
• Redis can be used as hibernate second level cache
• Using Redis to rate control the API usage by IP/UA in securely
• Actively migrating user service to Redis using hashes
• Planning to migrate newsfeed, profile and pairings stores
Redis labs cluster solution
SUPERCHARGE MICROSERVICES WITH REDIS
Redis monitoring and alerting
SUPERCHARGE MICROSERVICES WITH REDIS
Redis modules in mix!
SUPERCHARGE MICROSERVICES WITH REDIS
• RedisSearch
• rebloom
• Redis Graph
• Redis-timeseries
• Session Gate
• ReJSON
• Redis-cell
• Redis-ML
• topk
• ReDe
https://redis.io/modules
Thank	You

Contenu connexe

Tendances

RedisConf18 - Scalable Microservices with Event Sourcing and Redis
RedisConf18 - Scalable  Microservices  with  Event  Sourcing  and  Redis RedisConf18 - Scalable  Microservices  with  Event  Sourcing  and  Redis
RedisConf18 - Scalable Microservices with Event Sourcing and Redis Redis Labs
 
RedisConf18 - Remote Monitoring & Controlling Scienific Instruments
RedisConf18 - Remote Monitoring & Controlling Scienific InstrumentsRedisConf18 - Remote Monitoring & Controlling Scienific Instruments
RedisConf18 - Remote Monitoring & Controlling Scienific InstrumentsRedis Labs
 
RedisConf18 - Ultra Scaling with Redis Enterprise
RedisConf18 - Ultra Scaling with Redis EnterpriseRedisConf18 - Ultra Scaling with Redis Enterprise
RedisConf18 - Ultra Scaling with Redis EnterpriseRedis Labs
 
RedisConf18 - Techniques for Synchronizing In-Memory Caches with Redis
RedisConf18 - Techniques for Synchronizing In-Memory Caches with RedisRedisConf18 - Techniques for Synchronizing In-Memory Caches with Redis
RedisConf18 - Techniques for Synchronizing In-Memory Caches with RedisRedis Labs
 
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and MicroservicesRedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and MicroservicesRedis Labs
 
RedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in Redis
RedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in RedisRedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in Redis
RedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in RedisRedis Labs
 
RedisConf17 - Operationalizing Redis at Scale
RedisConf17 - Operationalizing Redis at ScaleRedisConf17 - Operationalizing Redis at Scale
RedisConf17 - Operationalizing Redis at ScaleRedis Labs
 
RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...
RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...
RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...Redis Labs
 
What's new with enterprise Redis - Leena Joshi, Redis Labs
What's new with enterprise Redis - Leena Joshi, Redis LabsWhat's new with enterprise Redis - Leena Joshi, Redis Labs
What's new with enterprise Redis - Leena Joshi, Redis LabsRedis Labs
 
Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More!
Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More! Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More!
Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More! Redis Labs
 
RedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ Memory
RedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ MemoryRedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ Memory
RedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ MemoryRedis Labs
 
RedisConf18 - Redis Fault Injection
RedisConf18  - Redis Fault InjectionRedisConf18  - Redis Fault Injection
RedisConf18 - Redis Fault InjectionRedis Labs
 
RedisConf18 - Implementing a New Data Structure for Redis
RedisConf18 - Implementing a New Data Structure for Redis  RedisConf18 - Implementing a New Data Structure for Redis
RedisConf18 - Implementing a New Data Structure for Redis Redis Labs
 
RedisConf17 - Redis in High Traffic Adtech Stack
RedisConf17 - Redis in High Traffic Adtech StackRedisConf17 - Redis in High Traffic Adtech Stack
RedisConf17 - Redis in High Traffic Adtech StackRedis Labs
 
Running Analytics at the Speed of Your Business
Running Analytics at the Speed of Your BusinessRunning Analytics at the Speed of Your Business
Running Analytics at the Speed of Your BusinessRedis Labs
 
RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...
RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...
RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...Redis Labs
 
RedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel HochmanRedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel HochmanRedis Labs
 
RedisConf18 - Redis as a time-series DB
RedisConf18 - Redis as a time-series DBRedisConf18 - Redis as a time-series DB
RedisConf18 - Redis as a time-series DBRedis Labs
 
Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...
Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...
Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...Amazon Web Services
 
Redis Reliability, Performance & Innovation
Redis Reliability, Performance & InnovationRedis Reliability, Performance & Innovation
Redis Reliability, Performance & InnovationRedis Labs
 

Tendances (20)

RedisConf18 - Scalable Microservices with Event Sourcing and Redis
RedisConf18 - Scalable  Microservices  with  Event  Sourcing  and  Redis RedisConf18 - Scalable  Microservices  with  Event  Sourcing  and  Redis
RedisConf18 - Scalable Microservices with Event Sourcing and Redis
 
RedisConf18 - Remote Monitoring & Controlling Scienific Instruments
RedisConf18 - Remote Monitoring & Controlling Scienific InstrumentsRedisConf18 - Remote Monitoring & Controlling Scienific Instruments
RedisConf18 - Remote Monitoring & Controlling Scienific Instruments
 
RedisConf18 - Ultra Scaling with Redis Enterprise
RedisConf18 - Ultra Scaling with Redis EnterpriseRedisConf18 - Ultra Scaling with Redis Enterprise
RedisConf18 - Ultra Scaling with Redis Enterprise
 
RedisConf18 - Techniques for Synchronizing In-Memory Caches with Redis
RedisConf18 - Techniques for Synchronizing In-Memory Caches with RedisRedisConf18 - Techniques for Synchronizing In-Memory Caches with Redis
RedisConf18 - Techniques for Synchronizing In-Memory Caches with Redis
 
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and MicroservicesRedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
 
RedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in Redis
RedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in RedisRedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in Redis
RedisConf18 - Fail-Safe Starvation-Free Durable Priority Queues in Redis
 
RedisConf17 - Operationalizing Redis at Scale
RedisConf17 - Operationalizing Redis at ScaleRedisConf17 - Operationalizing Redis at Scale
RedisConf17 - Operationalizing Redis at Scale
 
RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...
RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...
RedisConf18 - Active-Active Geo-Distributed Apps with Redis CRDTs (conflict f...
 
What's new with enterprise Redis - Leena Joshi, Redis Labs
What's new with enterprise Redis - Leena Joshi, Redis LabsWhat's new with enterprise Redis - Leena Joshi, Redis Labs
What's new with enterprise Redis - Leena Joshi, Redis Labs
 
Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More!
Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More! Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More!
Redis in a Multi Tenant Environment–High Availability, Monitoring & Much More!
 
RedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ Memory
RedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ MemoryRedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ Memory
RedisConf18 - Re-architecting Redis-on-Flash with Intel 3DX Point™ Memory
 
RedisConf18 - Redis Fault Injection
RedisConf18  - Redis Fault InjectionRedisConf18  - Redis Fault Injection
RedisConf18 - Redis Fault Injection
 
RedisConf18 - Implementing a New Data Structure for Redis
RedisConf18 - Implementing a New Data Structure for Redis  RedisConf18 - Implementing a New Data Structure for Redis
RedisConf18 - Implementing a New Data Structure for Redis
 
RedisConf17 - Redis in High Traffic Adtech Stack
RedisConf17 - Redis in High Traffic Adtech StackRedisConf17 - Redis in High Traffic Adtech Stack
RedisConf17 - Redis in High Traffic Adtech Stack
 
Running Analytics at the Speed of Your Business
Running Analytics at the Speed of Your BusinessRunning Analytics at the Speed of Your Business
Running Analytics at the Speed of Your Business
 
RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...
RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...
RedisConf17 - Redis Enterprise: Continuous Availability, Unlimited Scaling, S...
 
RedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel HochmanRedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
 
RedisConf18 - Redis as a time-series DB
RedisConf18 - Redis as a time-series DBRedisConf18 - Redis as a time-series DB
RedisConf18 - Redis as a time-series DB
 
Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...
Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...
Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303...
 
Redis Reliability, Performance & Innovation
Redis Reliability, Performance & InnovationRedis Reliability, Performance & Innovation
Redis Reliability, Performance & Innovation
 

Similaire à Microservices and Redis: A perfect match

Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020
Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020
Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020Redis Labs
 
Real-time Analytics with Redis
Real-time Analytics with RedisReal-time Analytics with Redis
Real-time Analytics with RedisCihan Biyikoglu
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarRTTS
 
Hadoop & no sql new generation database systems
Hadoop & no sql   new generation database systemsHadoop & no sql   new generation database systems
Hadoop & no sql new generation database systemsramazan fırın
 
Presentacion redislabs-ihub
Presentacion redislabs-ihubPresentacion redislabs-ihub
Presentacion redislabs-ihubssuser9d7c90
 
Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...
Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...
Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...Data Con LA
 
Redis+Spark Structured Streaming: Roshan Kumar
Redis+Spark Structured Streaming: Roshan KumarRedis+Spark Structured Streaming: Roshan Kumar
Redis+Spark Structured Streaming: Roshan KumarRedis Labs
 
Real time Object Detection and Analytics using RedisEdge and Docker
Real time Object Detection and Analytics using RedisEdge and DockerReal time Object Detection and Analytics using RedisEdge and Docker
Real time Object Detection and Analytics using RedisEdge and DockerAjeet Singh Raina
 
Graph Database and Neo4j
Graph Database and Neo4jGraph Database and Neo4j
Graph Database and Neo4jSina Khorami
 
Redispresentation apac2012
Redispresentation apac2012Redispresentation apac2012
Redispresentation apac2012Ankur Gupta
 
Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!Dave Nielsen
 
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020Redis Labs
 
USQL Trivadis Azure Data Lake Event
USQL Trivadis Azure Data Lake EventUSQL Trivadis Azure Data Lake Event
USQL Trivadis Azure Data Lake EventTrivadis
 
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...Amazon Web Services
 
Big Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it allBig Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it allBigDataExpo
 
Keynote: Open Source für den geschäftskritischen Einsatz
Keynote: Open Source für den geschäftskritischen EinsatzKeynote: Open Source für den geschäftskritischen Einsatz
Keynote: Open Source für den geschäftskritischen EinsatzMariaDB plc
 
Revolution R Enterprise - Portland R User Group, November 2013
Revolution R Enterprise - Portland R User Group, November 2013Revolution R Enterprise - Portland R User Group, November 2013
Revolution R Enterprise - Portland R User Group, November 2013Revolution Analytics
 

Similaire à Microservices and Redis: A perfect match (20)

Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020
Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020
Moving Beyond Cache by Yiftach Shoolman - Redis Day Bangalore 2020
 
Real-time Analytics with Redis
Real-time Analytics with RedisReal-time Analytics with Redis
Real-time Analytics with Redis
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing Webinar
 
Hadoop & no sql new generation database systems
Hadoop & no sql   new generation database systemsHadoop & no sql   new generation database systems
Hadoop & no sql new generation database systems
 
Presentacion redislabs-ihub
Presentacion redislabs-ihubPresentacion redislabs-ihub
Presentacion redislabs-ihub
 
MongoDB 3.4 webinar
MongoDB 3.4 webinarMongoDB 3.4 webinar
MongoDB 3.4 webinar
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...
Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...
Big Data Day LA 2016/ NoSQL track - Analytics at the Speed of Light with Redi...
 
Redis+Spark Structured Streaming: Roshan Kumar
Redis+Spark Structured Streaming: Roshan KumarRedis+Spark Structured Streaming: Roshan Kumar
Redis+Spark Structured Streaming: Roshan Kumar
 
Real time Object Detection and Analytics using RedisEdge and Docker
Real time Object Detection and Analytics using RedisEdge and DockerReal time Object Detection and Analytics using RedisEdge and Docker
Real time Object Detection and Analytics using RedisEdge and Docker
 
Graph Database and Neo4j
Graph Database and Neo4jGraph Database and Neo4j
Graph Database and Neo4j
 
Redispresentation apac2012
Redispresentation apac2012Redispresentation apac2012
Redispresentation apac2012
 
Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!
 
Java at lifeblob
Java at lifeblobJava at lifeblob
Java at lifeblob
 
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
 
USQL Trivadis Azure Data Lake Event
USQL Trivadis Azure Data Lake EventUSQL Trivadis Azure Data Lake Event
USQL Trivadis Azure Data Lake Event
 
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
 
Big Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it allBig Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it all
 
Keynote: Open Source für den geschäftskritischen Einsatz
Keynote: Open Source für den geschäftskritischen EinsatzKeynote: Open Source für den geschäftskritischen Einsatz
Keynote: Open Source für den geschäftskritischen Einsatz
 
Revolution R Enterprise - Portland R User Group, November 2013
Revolution R Enterprise - Portland R User Group, November 2013Revolution R Enterprise - Portland R User Group, November 2013
Revolution R Enterprise - Portland R User Group, November 2013
 

Plus de Redis Labs

Redis Day Bangalore 2020 - Session state caching with redis
Redis Day Bangalore 2020 - Session state caching with redisRedis Day Bangalore 2020 - Session state caching with redis
Redis Day Bangalore 2020 - Session state caching with redisRedis Labs
 
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020Redis Labs
 
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...Redis Labs
 
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020Redis Labs
 
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...Redis Labs
 
Redis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
Redis for Data Science and Engineering by Dmitry Polyakovsky of OracleRedis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
Redis for Data Science and Engineering by Dmitry Polyakovsky of OracleRedis Labs
 
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020Redis Labs
 
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...Redis Labs
 
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...Redis Labs
 
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...Redis Labs
 
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...Redis Labs
 
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...Redis Labs
 
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020Redis Labs
 
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020Redis Labs
 
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020Redis Labs
 
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020Redis Labs
 
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...Redis Labs
 
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...Redis Labs
 
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...Redis Labs
 
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...Redis Labs
 

Plus de Redis Labs (20)

Redis Day Bangalore 2020 - Session state caching with redis
Redis Day Bangalore 2020 - Session state caching with redisRedis Day Bangalore 2020 - Session state caching with redis
Redis Day Bangalore 2020 - Session state caching with redis
 
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
 
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
 
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
 
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
 
Redis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
Redis for Data Science and Engineering by Dmitry Polyakovsky of OracleRedis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
Redis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
 
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
 
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
 
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
 
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
 
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
 
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
 
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
 
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
 
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
 
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
 
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
 
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
 
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
 
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
 

Dernier

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Dernier (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Microservices and Redis: A perfect match

  • 1. Microservices and Redis: A Match made in Heaven April 26th 2018
  • 2. SUPERCHARGE MICROSERVICES WITH REDIS Vijay Vangapandu Software Architect https://www.linkedin.com/in/vijayvangapandu
  • 3. • Our comprehensive & revealing Relationship Questionnaire • 29 Dimensions® of Compatibility • 15+ million matches per day globally (20+ billion since inception) • 100+ thousand photos uploaded per day • 1+ million communications per day Who is eharmony? SUPERCHARGE MICROSERVICES WITH REDIS
  • 4. eharmony core product SUPERCHARGE MICROSERVICES WITH REDIS
  • 5. eharmony core product SUPERCHARGE MICROSERVICES WITH REDIS
  • 6. Product Experience SUPERCHARGE MICROSERVICES WITH REDIS COMPATIBILITY AFFINITY SELF-SELECT PROFILE
  • 7. Product Experience SUPERCHARGE MICROSERVICES WITH REDIS Match Listing CommunicationMatch Profile Dashboard
  • 8. A microservice is a single self-contained unit which, together with many others, makes up a large application. Microservices SUPERCHARGE MICROSERVICES WITH REDIS
  • 9. Benefits Of Microservices Developer Independence Small teams work in parallel and can iterate faster. Eliminates any long-term commitment to a technology stack. Isolation and resilience If a component dies, you spin up another while the rest of the application continues to function. Scalability Smaller components take up fewer resources and can be scaled to meet increasing demand of that component only. Relationship to the business Microservice architectures are split along business domain boundaries, increasing independence and understanding across the organization SUPERCHARGE MICROSERVICES WITH REDIS
  • 10. Benefits Of Microservices SUPERCHARGE MICROSERVICES WITH REDIS 1. Number of deployments per day 2. Time To Market the new features 3. Service availability 4. Number of production issues Continues deployment integration with slack
  • 11. SUPERCHARGE MICROSERVICES WITH REDIS Login Public API (Gateway) Profile Matches Comm Badging NewsfeedPhotos Config Match Profile DashboardInbox Message bus Nodejs App Stack Eharmony Microservices Architecture CMP User ActivityUser Pairings Scorer/Modeling Event ListenerMatching Batch Jobs User ServiceMatch Maker Aggregation Services Core Services Persistance Matching
  • 12. SUPERCHARGE MICROSERVICES WITH REDIS Public API (Gateway) Profile Matches Communication BadgingPhotos Message bus Communication flow between services Dashboard Newsfeed Match Profile Matching services/jobs
  • 13. • Redis is an open source (BSD licensed), • In-memory data structure key-value store • Can be used as a database, cache and message broker. • Primary – Replica architecture • Provides high availability via Redis Sentinel • Automatic partitioning with Redis Cluster • Rich set of operations on various data structures • Client libraries for almost all popular languages • Large adoption and great community support • Single threaded and supports atomic operations What is redis? SUPERCHARGE MICROSERVICES WITH REDIS
  • 14. Redis data structures Strings Binary-safe strings is most commonly used data structure to store simple key-value data. Lists Collection of string elements sorted in insertion order (linked lists). Sets Collection of unique, unsorted string elements. Sorted sets Similar to set with every element associated to floating number value, called SCORE. Supports range queries. SUPERCHARGE MICROSERVICES WITH REDIS Hashes Which are maps composed of fields associated with values. Both the field and value are strings. HyperLogLogs Probabilistic data structure used in order to count unique things.
  • 15. Redis deployment options SUPERCHARGE MICROSERVICES WITH REDIS M S SSnapshot/AOF • Persistence • Snapshot for periodic backup • AOF for every write ( more reliable) • Replication • Data will be replicated to read-only slaves • Failover : Manual M S S • Persistence • Snapshot for periodic backup • AOF for every write ( more reliable) • Replication • Data will be replicated to read-only slaves • Failover : • Automatic failover through sentinel Sent inel Sent inel Sent inel S1 • Persistence • Snapshot for periodic backup • AOF for every write ( more reliable) • Flash optimized storage with redis labs cluster • Replication • Data will be replicated to read-only slaves • Failover : • Automatic failover through cluster M2 M1 S2 Keys A - N Keys O - Z
  • 16. SUPERCHARGE MICROSERVICES WITH REDIS Redis use-cases @eharmony
  • 17. SUPERCHARGE MICROSERVICES WITH REDIS Login Public API (Gateway) Profile Matches Comm Badging NewsfeedPhotos Nodejs App Stack Redis as auth store Refresh tokens Access tokens
  • 18. Redis as auth store SUPERCHARGE MICROSERVICES WITH REDIS • Simple string key-value based store • Token as key and Auth object as value • Access token has shorter TTL • Refresh has longer TTL • JEDIS client library ( SpringData) • Leveraging RedisLabs replication
  • 19. Redis as auth store SUPERCHARGE MICROSERVICES WITH REDIS JedisPoolConfig poolConfig = new JedisPoolConfig(); JedisConnectionFactory cf = new JedisConnectionFactory(); cf.setHostName({hostname}); cf.setPort({port}); cf.setPoolConfig(poolConfig ); RedisTemplate<String, String> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(cf); redisTemplate.opsForValue(). set(tokenKey, accesstoken, duration, CACHE_TTL_UNITS); redisAccessTokenTemplate.opsForValue().get(tokenKey); redisAccessTokenTemplate.delete(accessToken.getTokenId()); -bash-4.1$ ./redis-cli -p XXXX 127.0.0.1:XXXX> get "661295e5-0e4c-XX” "{"atVal":"661295e5-0e4c-XX",""authorities":[...}” 127.0.0.1:XXXX> ttl "661295e5-0e4c-XX” (integer) 132888 Client Configuration Operations Redis CLI
  • 20. Redis as auth store - Performance SUPERCHARGE MICROSERVICES WITH REDIS
  • 21. Matching User Service SUPERCHARGE MICROSERVICES WITH REDIS Message bus Redis as matching user store CMP User Activity User TimelinePairingsMatch maker Scorer Modeling FeatureX User Store MAS Matching Batch Jobs Matching Event Listener
  • 22. SUPERCHARGE MICROSERVICES WITH REDIS • Hashes data structure • Data stored in binrary format - Protocol buffers • UserId as key • Various user data sections as categories for Map keys • Ex: User Info, Photos, Activity • JEDIS client library ( SpringData) • Leveragin RedisLabs cluster with 6 shards • Leveraging RedisLabs Flash storage Redis as matching user store
  • 23. Redis as matching user store SUPERCHARGE MICROSERVICES WITH REDIS public Map<String, V> fetchValues(final Iterable<String> keys) { List results = redisTemplate.executePipelined(new SessionCallback<Object>() { public Object execute(RedisOperations operations) { Iterator var2 = keys.iterator(); while(var2.hasNext()) { operations.opsForHash().entries((String)var2.next()); } }}); operations.watch(key); byte[] hashValue = (byte[])hashOperations.get(key, hashKey); T value = valueSerializer.deserialize(hashKey, hashValue); value = merger.merge(key, value); byte[] mergedHashValue = valueSerializer.serialize(hashKey, value); operations.multi(); hashOperations.put(key, hashKey, mergedHashValue); List<Object> execResult = operations.exec(); //deserialize to proto... if(hashKey.equalsIgnoreCase("user-activity")) return ActivityProto.parseFrom(hashValue); Fetch Entries in batch Partial updates ”user:123”: “activity”: {}, ”profile”:{}, “photos”:{}, “questionnaire”:{}, ”user:124”: “activity”: {}, ”profile”:{}, “photos”:{}, “questionnaire”:{},
  • 24. SUPERCHARGE MICROSERVICES WITH REDIS Public API (Gateway) Profile Matches Comm Badge API Photos Redis as badges store Badge Store Badge Processor Message bus
  • 25. Redis as badges store SUPERCHARGE MICROSERVICES WITH REDIS • Hashes data structure • Leveraging atomic counters • UserId as key • Various badge categories as Map keys • Ex: Photos, Matches, Activity • Accumulators as values • JEDIS client library ( SpringData) • Leveraging RedisLabs Flash storage
  • 26. Redis as Badges Store SUPERCHARGE MICROSERVICES WITH REDIS HashOperations<String, String, String> hashOps = redisTemplate.opsForHash(); hashOps.increment(“user:123”, “matches”, 1 ); hashOps.increment(“user:123”, “favorite”, -1 * decrementByCount); hashOps. delete(“user:123”, “matches”); 127.0.0.1:XXXX> hincrby user:123 matches 10 127.0.0.1:XXXX> hincrby user:123 favorite -2 127.0.0.1:XXXX> hdel user:231 favorite Operations Redis CLI “user:123”: “matches”:24, “communication”:2, “photos-new”: 5 “favorite”: 3 “user:231”: “matches”:3, “communication”:1, “photos-new”: 0 “favorite”: 2 HINCRBY
  • 27. Redis as Badges Store SUPERCHARGE MICROSERVICES WITH REDIS port 5002 sentinel monitor master-badeges {masternode ip} {port} 1 sentinel down-after-milliseconds master-badges 10000 sentinel failover-timeout master-badges 20000 sentinel config-epoch master-badges 94 # Generated by CONFIG REWRITE sentinel leader-epoch master-badges 96 sentinel known-slave master-badges {slavenode ip} {port} sentinel known-sentinel master-badges {sentinel2} 5002 eb42be8 sentinel known-sentinel master-badges {sentinel3} 5002 9243503 sentinel current-epoch 96 Sentinel Configuration M S S • Persistence • Snapshot for periodic backup • AOF for every write ( more reliable) • Replication • Data will be replicated to read-only slaves • Failover : • Automatic failover through sentinel Sent inel Sent inel Sent inel
  • 28. SUPERCHARGE MICROSERVICES WITH REDIS Public API (Gateway) Match Save Service Redis as speed store in lambda architecture Delta Store Message bus Match Query Service Batch Store Match Events Processor Match creation jobs
  • 29. SUPERCHARGE MICROSERVICES WITH REDIS CDN Redis sorted sets for Security Delta Store Gateway/Router Profile Matches Comm NewsfeedPhotos Admin Login Refresh tokens Access tokensAccess Tokens Refresh Tokens Block/unblock IP/User Agent Logs Aggregates Block Access Block Access
  • 30. Redis sorted sets for Security SUPERCHARGE MICROSERVICES WITH REDIS • Connecting redis from spark jobs • Leveraging Sorted Sets to find the top N anomalies to block • Single threaded atomic operations better suited to store accumulators from spark • Leveraging kafka window operation for streaming • JEDIS client library ( SpringData) • Leveraging sentinel for auto failover
  • 31. Redis sorted sets for security SUPERCHARGE MICROSERVICES WITH REDIS ZSetOperations<String, String> zsetOps = redisTemplate.opsForZSet(); Double score1 = zsetOps.incrementScore("ipList", "10.23.43.11", 67); Double score1 = zsetOps.incrementScore("ipList", "121.23.54.1", 20); Double score1 = zsetOps.incrementScore("ipList", ”210.2.4.34", 345); Set<String> annomilies = zsetOps.rangeByScore("ip-blacklist", 50, 200); Results: 10.23.43.11, 210.2.4.34 127.0.0.1:XXXX> zadd ip-blacklist 10 "10.2.3.4” 127.0.0.1:XXXX> zadd ip-blacklist 200 "100.23.45.67" 127.0.0.1:XXXX> zrange ip-blacklist 0 -1 1) "10.2.3.4” 2) "100.23.45.67" Operations Redis CLI import redis.clients.jedis.{Jedis, ScanParams, ScanResult} jedis.zadd(key, dataToStore) jedis.watch(key) val transaction = jedis.multi() transaction.hset(key, valueData.value, JsonUtil.toJson(valueData)) transaction.expire(key, redisTtl) transaction.exec() val result:List[ValueData]= jedis .zrangeByScoreWithScores(key, minScore, maxScore) .asScala.toList .map((tuple: Tuple) => JsonUtil.toValueData(tuple.getElement)) Java Scala
  • 32. Redis sorted sets for security SUPERCHARGE MICROSERVICES WITH REDIS API BOT mitigation
  • 33. SUPERCHARGE MICROSERVICES WITH REDIS Redis pub/sub for configurations Config Service ServiceServiceServiceService ServiceServiceServiceService ServiceServiceServiceService Redis Pub/Sub Gateway
  • 34. Many more use cases… SUPERCHARGE MICROSERVICES WITH REDIS • Redis can be used as hibernate second level cache • Using Redis to rate control the API usage by IP/UA in securely • Actively migrating user service to Redis using hashes • Planning to migrate newsfeed, profile and pairings stores
  • 35. Redis labs cluster solution SUPERCHARGE MICROSERVICES WITH REDIS
  • 36. Redis monitoring and alerting SUPERCHARGE MICROSERVICES WITH REDIS
  • 37. Redis modules in mix! SUPERCHARGE MICROSERVICES WITH REDIS • RedisSearch • rebloom • Redis Graph • Redis-timeseries • Session Gate • ReJSON • Redis-cell • Redis-ML • topk • ReDe https://redis.io/modules