| name | upstash |
| description | Upstash serverless Redis, rate limiting, QStash job scheduling, and Upstash Vector for semantic search — all edge-compatible |
| layer | domain |
| category | database |
| triggers | ["upstash","upstash redis","upstash ratelimit","qstash","upstash vector","serverless redis","edge redis","serverless rate limit"] |
| inputs | ["Use case (caching, rate limiting, job scheduling, vector search)","Runtime environment (Edge, Node.js, serverless)","Throughput and latency requirements"] |
| outputs | ["Upstash client configuration","Rate limiting middleware","QStash job scheduling setup","Vector index and query implementation"] |
| linksTo | ["redis","caching","nextjs","vercel"] |
| linkedFrom | ["redis","caching","authentication"] |
| preferredNextSkills | ["caching","nextjs"] |
| fallbackSkills | ["redis"] |
| riskLevel | low |
| memoryReadPolicy | selective |
| memoryWritePolicy | none |
| sideEffects | ["Creates Upstash resources via REST API"] |
Upstash Skill
Purpose
Implement serverless-native Redis, rate limiting, background job scheduling, and vector search using Upstash. All Upstash clients communicate over HTTP/REST, making them compatible with edge runtimes, Vercel serverless functions, and Cloudflare Workers where persistent TCP connections are not available.
@upstash/redis — Serverless Redis
import { Redis } from "@upstash/redis";
export const redis = new Redis({
url: process.env.UPSTASH_REDIS_REST_URL!,
token: process.env.UPSTASH_REDIS_REST_TOKEN!,
});
await redis.set("user:123", { name: "Jane", plan: "pro" }, { ex: 3600 });
const user = await redis.get<{ name: string; plan: string }>("user:123");
const pipe = redis.pipeline();
pipe.incr("page:views");
pipe.expire("page:views", 86400);
pipe.get("page:views");
const results = pipe.();