
What is Upstash?
Upstash is a serverless data platform designed for low-latency, pay-per-request use cases, offering fully managed Redis and Kafka services with a unique architecture built for edge, cloud, and serverless environments.
Unlike traditional databases or brokers that require provisioning and scaling, Upstash allows developers to use Redis or Kafka APIs in a serverless, RESTful, or edge-optimized way—perfectly suited for modern applications built on Vercel, Cloudflare Workers, AWS Lambda, or Netlify Functions.
Core products offered by Upstash:
- Upstash Redis: A managed Redis instance with serverless pricing and global edge replication.
- Upstash Kafka: Serverless Kafka for real-time event streaming and pub/sub systems.
- Upstash QStash: A reliable serverless message queue API for scheduled background jobs.
Upstash is designed to be cost-effective, developer-friendly, and ideal for real-time or stateless applications.
Major Use Cases of Upstash
- Real-Time Caching with Serverless Functions:
Use Upstash Redis to cache data for APIs or serverless endpoints, reducing database load. - Edge-Based Applications:
Combine with Vercel/Cloudflare Workers to execute fast, globally-distributed applications. - Rate Limiting and Throttling:
Implement scalable IP or user-based rate limiting using Redis in milliseconds. - Session and Token Storage:
Store session data or JWT tokens securely with TTL in Upstash Redis. - Serverless Event Streaming:
Build modern event-driven architectures with Kafka, without managing brokers or Zookeeper. - IoT and Mobile Streaming:
Use Kafka for telemetry, user activity tracking, or device events. - Scheduled Background Jobs:
Use QStash to schedule retries, background jobs, and webhook deliveries with guaranteed reliability. - Analytics Pipelines:
Build real-time dashboards or analytics pipelines without provisioning servers.

How Upstash Works – Architecture Overview
Upstash’s architecture is built for multi-region, low-latency, and serverless computing environments. It combines cloud-native design with API-first access patterns.
Architecture Highlights:
- Globally Distributed Infrastructure:
Upstash Redis supports global edge replication—data is cached close to the user (e.g., using Cloudflare POPs). - Stateless Protocols:
Upstash offers both native Redis/Kafka clients and REST APIs, perfect for environments that restrict socket or persistent connections. - Serverless Billing Model:
You only pay for what you use—requests, messages, or storage—not for idle time or provisioned capacity. - Built-in Authentication & Access Control:
Every database or topic is protected via tokens or API keys. - Client SDKs & Integrations:
Upstash provides SDKs for JavaScript, Python, Go, Rust, and integrations with Vercel, Next.js, and serverless runtimes.
Basic Workflow of Upstash
The core workflow for using Upstash generally follows this flow:
- Create Account & Resource:
Register with Upstash, and create a Redis database, Kafka topic, or QStash project. - Configure Permissions & Access Tokens:
Generate secure access tokens (read-only, read-write). - Choose Access Method:
Use REST API (HTTP requests) or SDK/client (Redis/Kafka-compatible libraries). - Send/Receive Data:
Perform operations like SET/GET (Redis), publish/consume (Kafka), or schedule jobs (QStash). - Monitor and Scale Automatically:
Use the dashboard to monitor usage, latency, and billing with no manual scaling required.
Step-by-Step Getting Started Guide for Upstash
✅ Prerequisites:
- Upstash account (https://upstash.com/)
- Basic knowledge of Redis or Kafka
- Node.js or Python installed (for client-side testing)
- REST client like Postman (optional for HTTP testing)
Step 1: Create an Upstash Account
- Visit: https://upstash.com
- Sign in with GitHub, Google, or email
- Go to the Console Dashboard
Step 2: Create a Redis Database
- Click “New Database”
- Choose region (e.g., Global for edge), set a name
- Wait for provisioning (few seconds)
- Copy your REST URL, Redis URL, and access tokens
Step 3: Interact with Redis via REST API
Set a Key:
curl -X POST \
https://your-db-id.upstash.io/set/mykey/myvalue \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Get the Key:
curl https://your-db-id.upstash.io/get/mykey \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Step 4: Use Redis Client in Node.js
Install the Redis client:
npm install ioredis
Example Code:
const Redis = require('ioredis');
const redis = new Redis("rediss://<username>:<password>@your-db-id.upstash.io:port");
async function run() {
await redis.set("city", "Delhi");
const value = await redis.get("city");
console.log("City is:", value);
}
run();
Step 5: Create a Kafka Topic (Optional)
- Go to Kafka tab → Create Topic
- Use Upstash’s Kafka Console or connect with Kafka clients (e.g.,
kafka-python
,confluent-kafka-go
)
Step 6: Use QStash for Serverless Job Scheduling
- Go to QStash tab → New Endpoint
- Define target URL, schedule, and retries
Example API call to send:
curl -X POST https://qstash.upstash.io/v1/publish/https://yourapi.com/webhook \
-H "Authorization: Bearer <YOUR_QSTASH_TOKEN>" \
-d 'Hello, this is a background job!'