@upstash/redis is an HTTP/REST based Redis client for typescript, built on top
of Upstash REST API.
Note
This project is in GA Stage.
The Upstash Professional Support fully covers this project. It receives regular updates, and bug fixes. The Upstash team is committed to maintaining and improving its functionality.
It is the only connectionless (HTTP based) Redis client and designed for:
- Serverless functions (AWS Lambda ...)
- Cloudflare Workers (see the example)
- Fastly Compute@Edge (see the example)
- Next.js, Jamstack ...
- Client side web/mobile applications
- WebAssembly
- and other environments where HTTP is preferred over TCP.
See the list of APIs supported.
npm install @upstash/redisimport { Redis } from "https://esm.sh/@upstash/redis";Create a new redis database on upstash
import { Redis } from "@upstash/redis"
const redis = new Redis({
url: <UPSTASH_REDIS_REST_URL>,
token: <UPSTASH_REDIS_REST_TOKEN>,
})
// string
await redis.set('key', 'value');
let data = await redis.get('key');
console.log(data)
await redis.set('key3', 'value3', {ex: 1});
// sorted set
await redis.zadd('scores', { score: 1, member: 'team1' })
data = await redis.zrange('scores', 0, 100 )
console.log(data)
// list
await redis.lpush('elements', 'magnesium')
data = await redis.lrange('elements', 0, 100 )
console.log(data)
// hash
await redis.hset('people', {name: 'joe'})
data = await redis.hget('people', 'name' )
console.log(data)
// sets
await redis.sadd('animals', 'cat')
data = await redis.spop('animals', 1)
console.log(data)We have a dedicated page for common problems. If you can't find a solution, please open an issue.
See the documentation for details.
- Create a changeset (
pnpm changeset) describing your changes and merge it tomain - Changeset workflow runs on push to
main. If changesets are pending, it opens a "Version Packages" PR. When that PR is merged, the workflow runs again, publishes git tags, creates GitHub releases, and uploads arelease-metaartifact - Router workflow detects the Changeset completion via
workflow_run, downloads therelease-metaartifact, and calls the npm Publish workflow withprerelease: falseand the resolved version - npm Publish checks out the released commit, builds, and publishes to npm under the
latesttag
- Trigger the Canary Release workflow manually from the Actions tab, selecting the package
- It creates a snapshot version (
x.y.z-canary.{timestamp}), creates a GitHub prerelease, and uploads arelease-metaartifact - Router picks it up the same way, calling npm Publish with
prerelease: true - npm Publish publishes to npm under the
canarytag
On every pull request, push to main, and daily schedule, the Router workflow runs the Tests workflow (unit tests, lint, build, and example integration tests).
Create a new redis database on upstash and copy the url and token
bun run testbun run buildThis library sends anonymous telemetry data to help us improve your experience. We collect the following:
- SDK version
- Platform (Deno, Cloudflare, Vercel)
- Runtime version (node@18.x)
You can opt out by setting the UPSTASH_DISABLE_TELEMETRY environment variable
to any truthy value.
UPSTASH_DISABLE_TELEMETRY=1Alternatively, you can pass enableTelemetry: false when initializing the Redis client:
const redis = new Redis({
// ...,
enableTelemetry: false,
});