Upstash: Serverless Data Platform with Redis, Vector, and QStash (2026)
Upstash: Serverless Data Platform with Redis, Vector, and QStash (2026)
Quick Answer
Upstash provides serverless data primitives via HTTP/REST, eliminating the connection problems of traditional Redis in serverless environments. The platform includes: Upstash Redis (connectionless caching), Upstash Vector (DiskANN-based semantic search), QStash (at-least-once message delivery), and Upstash Workflow (durable execution for long-running processes).
What is Upstash?
Upstash reimagines foundational data technologies for the serverless era:
┌─────────────────────────────────────────────────────────┐
│ Upstash Platform │
├──────────────┬──────────────┬──────────────┬────────────┤
│ Upstash Redis│ Upstash Vector│ QStash │ Workflow │
│ (Caching) │ (Search) │ (Messaging) │(Orchestration)│
├──────────────┴──────────────┴──────────────┴────────────┤
│ HTTP/REST + Global Replication │
└─────────────────────────────────────────────────────────┘
Unlike traditional Redis that requires persistent TCP connections, Upstash uses HTTP—making it compatible with Cloudflare Workers, Vercel Edge, and AWS Lambda.
Key Features
Upstash Redis
Connectionless Architecture:
- REST API over HTTP (no TCP connection management)
- RESP protocol compatibility for standard Redis clients
- Multi-tier storage: RAM for hot data, disk for cold
Consistency Model:
- Read Your Writes (RYW): Sync tokens prevent stale reads
- Global Replication: Multi-region data distribution
- Sync Tokens: Automatic RYW enforcement in SDKs
Storage Tiers: | Tier | Location | Latency | Use Case | |——|———-|———|———-| | RAM | In-memory | <1ms | Active/hot data | | Disk | NVMe SSD | ~10ms | Cold/evicted data |
Upstash Vector
DiskANN Algorithm:
- Optimized for SSD storage (unlike memory-bound HNSW)
- Scales to billions of vectors
- Low-latency queries without RAM constraints
Index Types:
- Dense: Semantic search (embeddings)
- Sparse: Keyword-based (BM25-like)
- Hybrid: Combined dense + sparse
import { Index } from '@upstash/vector';
const index = new Index({
url: process.env.UPSTASH_VECTOR_URL,
token: process.env.UPSTASH_VECTOR_TOKEN
});
// Query with metadata filtering
const results = await index.query({
vector: embedding,
topK: 10,
filter: { category: 'tech', year: { $gt: 2020 } }
});
@upstash/ratelimit
Sophisticated rate limiting with multiple algorithms:
| Algorithm | Description | Use Case |
|---|---|---|
| Fixed Window | Resets at fixed intervals | Simple quotas |
| Sliding Window | Fluid boundary prevention | API protection |
| Token Bucket | Bursty traffic allowance | Spiky workloads |
import { Ratelimit } from '@upstash/ratelimit';
import { Redis } from '@upstash/redis';
const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(10, '10 s'),
analytics: true
});
const { success, limit, remaining } = await ratelimit.limit(userId);
QStash: Serverless Message Queue
Push-Based Delivery:
- QStash delivers messages to HTTP endpoints
- Automatic retries with exponential backoff
- Dead Letter Queue (DLQ) for failed messages
Flow Control:
- URL Groups (fan-out) for pub/sub patterns
- Rate limits and parallelism controls
- Content-based deduplication
import { Client } from '@upstash/qstash';
const client = new Client({
token: process.env.QSTASH_TOKEN
});
await client.publishJSON({
url: 'https://api.example.com/webhook',
body: { event: 'order.created', data: order }
});
Upstash Workflow
Resumable Execution:
import { WorkflowContext } from '@upstash/workflow';
export async function myWorkflow(context: WorkflowContext) {
// Step 1: Executes, result persisted
const result1 = await context.run('step1', async () => {
return await fetch('https://api.example.com');
});
// Pause for 3 days (infrastructure handles this)
await context.sleep('3d');
// Step 2: Fast-forwards past step1 using persisted result
const result2 = await context.run('step2', async () => {
return await process(result1);
});
}
Use Cases:
- Long-running processes (beyond lambda timeout)
- Drip campaigns (scheduled email sequences)
- AI data processing pipelines
Upstash vs Competitors
Upstash vs Redis Cloud
| Feature | Upstash | Redis Cloud |
|---|---|---|
| Protocol | HTTP/REST + RESP | RESP (TCP) |
| Serverless | Native (scale-to-zero) | Via proxy only |
| Replication | Global (user-managed) | Managed clusters |
| Pricing | Per-request | Fixed instance |
| Edge | Native (50+ regions) | Limited edge locations |
Upstash vs Pinecone
| Feature | Upstash Vector | Pinecone |
|---|---|---|
| Algorithm | DiskANN (SSD) | HNSW (memory) |
| Storage Model | Decoupled | Coupled to pods |
| Hybrid Search | Native (sparse+dense) | Dense + sparse rerank |
| Pricing | Per-request | Storage + read/write units |
Upstash vs Cloudflare Workers KV/D1
| Feature | Upstash | Cloudflare |
|---|---|---|
| Consistency | Strong (RYW) | Eventual (KV) |
| Vector Search | Native | Vectorize (separate) |
| Message Queue | Built-in (QStash) | Queues (separate) |
| Global | 50+ regions | 300+ cities |
Platform Integrations
Vercel AI SDK
Upstash Vector as a retrieval provider:
import { vercelAITools } from '@upstash/vector';
const tools = vercelAITools({
index: UpstashVector.fromEnv()
});
// AI agents can autonomously query vector DB
Drizzle ORM Integration
import { upstashCache } from 'drizzle-orm/upstash-js';
// Cache queries in Upstash Redis
const users = await db.query.users.findMany({
withCache: upstashCache({ ttl: 60 })
});
Auth.js Integration
import { UpstashRedisAdapter } from '@auth/upstash-redis-adapter';
// Store sessions in Upstash Redis
export const { handlers, auth } = NextAuth({
adapter: UpstashRedisAdapter(redis)
});
Security and Compliance
Certifications:
- SOC 2 Type 2 (Prod Pack, Enterprise)
- HIPAA compliant (Enterprise with BAA)
- GDPR/CCPA compliant
Security Features:
- TLS encryption (mandatory)
- Encryption at rest (Prod Pack)
- Read-Only REST Tokens
- RBAC (Prod Pack)
- Request signing (QStash)
Pricing Structure
Upstash Redis
| Model | Pricing | Notes |
|---|---|---|
| Free | $0 | 500K commands/month |
| Pay-as-you-go | $0.20 per 100K commands | Scale-to-zero |
| Fixed | From $10/month | 250MB, 50GB bandwidth |
| Prod Pack | +$200/month/DB | RBAC, PrivateLink, SLA |
Upstash Vector
| Model | Pricing |
|---|---|
| Free | $0 (200M vector-dimensions) |
| Pay-as-you-go | $0.40 per 100K requests |
| Fixed | From $60/month |
QStash
- Pricing: Per-message delivered
- Retries: Included (automatic exponential backoff)
Use Cases: Best For
- Serverless Caching: Lambda, Workers, Vercel Edge
- Rate Limiting: API protection, per-user quotas
- RAG Applications: Vector search with metadata filtering
- Async Jobs: Background processing without workers
- Long-Running Workflows: Multi-step processes with sleeps
Use Cases: Avoid For
- Persistent TCP Connections: Use standard Redis instead
- Massive In-Memory Datasets: Cold data moves to disk
- Redis Modules: Not all Redis modules supported
Operational Limits
| Limit | Value |
|---|---|
| Max Request Size | 10MB |
| Max Value Size | Depends on plan |
| TTL Range | 1 second to ∞ |
| Workflow Sleep | Up to months |
FAQ
Is Upstash free?
Upstash offers generous free tiers: Redis (500K commands/month), Vector (200M vector-dimensions), QStash (usage-based). Paid tiers start at $10/month for fixed plans.
Does Upstash support Redis commands?
Yes, Upstash is Redis-compatible. It supports standard Redis commands via both REST API and RESP protocol. Standard Redis clients (ioredis, redis-py) work with configuration.
What is Read Your Writes consistency?
Upstash uses sync tokens to guarantee you read your own writes in global replication scenarios. When you write, you get a sync token. Include it in read requests to ensure you see your latest data.
Can I use Upstash with Cloudflare Workers?
Yes, Upstash is designed for edge runtimes. The HTTP-based access works natively in Cloudflare Workers without TCP connection issues.
Does Upstash support vector search?
Yes, Upstash Vector provides semantic search using the DiskANN algorithm optimized for SSD storage. Supports dense, sparse, and hybrid indexes with metadata filtering.
Related Technologies: Redis, Pinecone, Weaviate, Cloudflare D1, Turso, Vercel