Your Redis cluster is ready

Cache data on a managed Redis cluster through the Redis client library that your app already uses. When the primary node fails, Conjoin promotes a replica so that your application can reconnect without a code change.

Managed Redis clusters for caching, sessions, and pub/sub

Provision a Redis cluster for caching, session storage, or pub/sub messaging, and connect to it with any Redis client library. Conjoin handles failover to a replica, resizing, and persistence for the cluster, so the work left to your team is the set of Redis commands that your application sends.

Redis features that Conjoin manages for you

Sub-millisecond latency

MemoryStore holds your data in memory, so a typical read or write completes in under a millisecond. When you cache the records that your application requests most often, it can serve them without a database query.

Data structures

MemoryStore supports the Redis string, list, set, sorted set, hash, and stream types, so you can choose the structure that suits each kind of data, such as a hash for a session or a sorted set for a leaderboard.

Automatic failover

Conjoin keeps a replica of each primary node in sync. When a primary node fails, Conjoin promotes the replica and points your existing connection string at it, so your application can reconnect with no change to its configuration.

Cluster scaling

Resize a cluster when you need more memory or throughput. To serve more reads, add replicas to the existing cluster, with no migration of your data to a new one.

TTL management

When you set an expiration on a key, Redis deletes the key after that time passes, so you have no cleanup job to write for expired data.

Encryption

Conjoin encrypts the traffic to every cluster with TLS and encrypts persisted data at rest, with both settings on by default.

< 1ms
Latency

Typical time for a read or a write

0
Code changes on failover

Conjoin promotes a replica for your application to reconnect to

64GB
Max memory

Per cluster node

Build faster with solutions designed for real-world needs

Serve hot data in under a millisecond

Check MemoryStore before you query the database, and write the result to the cache with a TTL whenever the key is missing. Until the TTL expires, your application serves each later request from the cached copy in memory.

Impact

The sample looks up the EUR/USD quote for Pelagos Trading in MemoryStore and calls computeQuoteSnapshot only when GET returns no value. Because the SET command stores the snapshot for five seconds, your application answers every request in that window from the cached quote.

Prompt for a coding agent: Cache the EUR/USD quote for five seconds, and compute it again on a cache miss.

Conjoin IDE

Select a file to view its contents

Hold millions of sessions that expire on their own

Store each session as a Redis hash and set an expiration on its key. Redis deletes the session once that time passes, so you write no cleanup code for sessions that users abandon.

Impact

The sample stores the account, display name, and tenant for Naledi Mokoena in one hash and sets the key to expire after 86,400 seconds. Redis deletes that session 24 hours later with no sweep job on your side.

Prompt for a coding agent: Store each session in a hash that expires after 24 hours.

Conjoin IDE

Select a file to view its contents

Build rate limiting on atomic counters

Increment a counter for each client with INCR, which Redis applies atomically, and set the counter to expire when INCR creates it for the first request of a window. Compare the count with your limit before you process the request.

Impact

The sample allows each client IP 120 requests in a 60-second window. Redis counts concurrent requests from one client correctly, because INCR is atomic.

Prompt for a coding agent: Limit each client IP to 120 requests per minute.

Conjoin IDE

Select a file to view its contents

Rank leaderboards in real time with sorted sets

Store player scores in a sorted set, where ZADD records each score in O(log N) time. Because Redis maintains the set in score order, you can read the top of the board or one player's rank with a single command.

Impact

The sample records a score of 48,230 for Selin Aydın in season 12 of Driftwood Games, then reads the top ten players with their scores in one ZREVRANGE command.

Prompt for a coding agent: Record each player's score, and show the top ten players of the season.

Conjoin IDE

Select a file to view its contents

Build your next app on Conjoin

Conjoin will open with a free Build tier, while the pricing page already lists the launch prices for Pro and Business. If you tell us what you're building, we'll talk you through early access.