From 8d1396216ade00158d6b196963eeee9d78e26b3a Mon Sep 17 00:00:00 2001 From: ytkimirti Date: Sun, 11 Oct 2026 14:14:56 +0300 Subject: [PATCH] Serve product roots as pages and add per-product llms.txt --- .github/workflows/llms-check.yml | 6 +- README.mdx | 2 +- blob/index.mdx | 24 + blob/llms.txt | 45 ++ box/index.mdx | 27 + box/llms.txt | 78 ++ docs.json | 8 + llms-full.txt | 206 +++++- llms.txt | 21 + llms/README.md | 13 +- llms/src/build.ts | 169 ++++- llms/src/check.ts | 6 +- llms/src/generator.ts | 19 +- qstash/index.mdx | 27 + qstash/llms.txt | 165 +++++ realtime/index.mdx | 23 + realtime/llms.txt | 17 + redis/index.mdx | 33 + redis/llms.txt | 1180 ++++++++++++++++++++++++++++++ search/index.mdx | 32 + search/llms.txt | 72 ++ vector/index.mdx | 27 + vector/llms.txt | 135 ++++ workflow/index.mdx | 27 + workflow/llms.txt | 232 ++++++ 25 files changed, 2559 insertions(+), 35 deletions(-) create mode 100644 blob/index.mdx create mode 100644 blob/llms.txt create mode 100644 box/index.mdx create mode 100644 box/llms.txt create mode 100644 qstash/index.mdx create mode 100644 qstash/llms.txt create mode 100644 realtime/index.mdx create mode 100644 realtime/llms.txt create mode 100644 redis/index.mdx create mode 100644 redis/llms.txt create mode 100644 search/index.mdx create mode 100644 search/llms.txt create mode 100644 vector/index.mdx create mode 100644 vector/llms.txt create mode 100644 workflow/index.mdx create mode 100644 workflow/llms.txt diff --git a/.github/workflows/llms-check.yml b/.github/workflows/llms-check.yml index 5bac0b30e..208089acd 100644 --- a/.github/workflows/llms-check.yml +++ b/.github/workflows/llms-check.yml @@ -41,12 +41,12 @@ jobs: run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add llms.txt llms-full.txt - git commit -m "chore(llms): regenerate llms.txt and llms-full.txt" + git add llms.txt llms-full.txt ':(glob)*/llms.txt' + git commit -m "chore(llms): regenerate llms.txt files" git push - name: Fail if llms.txt was stale if: steps.check.outcome == 'failure' run: | - echo "::error::llms.txt / llms-full.txt were out of date. A regeneration commit was pushed to this PR — please review it and re-run CI." + echo "::error::llms.txt files were out of date. A regeneration commit was pushed to this PR; please review it and re-run CI." exit 1 diff --git a/README.mdx b/README.mdx index 52e0735e8..2f109373d 100644 --- a/README.mdx +++ b/README.mdx @@ -25,7 +25,7 @@ The site deploys from `main`. Every pull request gets a Docs7 preview link and a ## llms.txt -`llms.txt` and `llms-full.txt` are generated from `docs.json` and the MDX files. Don't edit them by hand. After changing pages, run: +`llms.txt`, `llms-full.txt`, and each product's `/llms.txt` are generated from `docs.json` and the MDX files. Don't edit them by hand. After changing pages, run: ```sh cd llms && npm install && npm run build diff --git a/blob/index.mdx b/blob/index.mdx new file mode 100644 index 000000000..68e61d54f --- /dev/null +++ b/blob/index.mdx @@ -0,0 +1,24 @@ +--- +title: "Upstash Blob" +sidebarTitle: "Overview" +description: "S3-compatible object storage with a server client and direct browser uploads." +--- + +Upstash Blob is S3-compatible object storage. `@upstash/blob` has a `Bucket` client for your server, and an upload handler plus React hooks that upload from the browser straight to storage. + +## Start here + +- [Quickstart](/blob/overall/quickstart): create a bucket, upload a file from the browser, and read it back. +- [Pricing & Limits](/blob/overall/pricing) + +## Sections + +- [Bucket](/blob/bucket/connecting): connect, then write, read, delete, and cache objects. +- [Browser Uploads](/blob/uploads/upload-handler): the upload handler and client, constraints, large files, and abandoned uploads. +- [Recipes](/blob/recipes/overview): profile pictures, product images, site assets, AI images, attachments, video, private documents, and exports. +- [Reference](/blob/reference/types): types, errors, and how signing works. + +## For AI agents + +- [/docs/blob/llms.txt](https://upstash.com/docs/blob/llms.txt) lists every Blob page. +- Append `.md` to any page URL for its Markdown, for example [/docs/blob/overall/quickstart.md](https://upstash.com/docs/blob/overall/quickstart.md). diff --git a/blob/llms.txt b/blob/llms.txt new file mode 100644 index 000000000..4ede9495d --- /dev/null +++ b/blob/llms.txt @@ -0,0 +1,45 @@ +# Upstash Blob + +> S3-compatible object storage with a server client and direct browser uploads. + +Every Upstash Blob page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Introduction + +- [Upstash Blob](https://upstash.com/docs/blob.md): S3-compatible object storage with a server client and direct browser uploads. +- [Quickstart](https://upstash.com/docs/blob/overall/quickstart.md): Create a bucket, upload a file straight from the browser, and read it back. +- [Pricing & Limits](https://upstash.com/docs/blob/overall/pricing.md): What Upstash Blob costs, and where the current limits are listed. + +## Bucket + +- [Connecting](https://upstash.com/docs/blob/bucket/connecting.md): Build a Bucket client from environment variables, on Node, on Cloudflare Workers, or through an S3 client. +- [Writing](https://upstash.com/docs/blob/bucket/writing.md): put, unique paths, metadata, conditional writes, copy and move, and signed upload URLs. +- [Reading](https://upstash.com/docs/blob/bucket/reading.md): get, info, exists and list, public URLs, and signed read URLs on a private bucket. +- [Deleting](https://upstash.com/docs/blob/bucket/deleting.md): Delete one path, an array or a prefix, and clear out incomplete multipart uploads. +- [Caching](https://upstash.com/docs/blob/bucket/caching.md): immutable, revalidate and no-store, where each one can be set, and what a CDN keeps. + +## Browser Uploads + +- [Upload Handler](https://upstash.com/docs/blob/uploads/upload-handler.md): Mount the upload route, authorize the upload in onBeforeUpload, and record the file in onUploadComplete. +- [Upload Client](https://upstash.com/docs/blob/uploads/upload-client.md): useUpload, useServerUpload and uploadHooks, for uploading from the browser straight to storage. +- [Constraints](https://upstash.com/docs/blob/uploads/constraints.md): maxSize, contentTypes and byte sniffing, enforced on your server before anything is signed. +- [Large Files](https://upstash.com/docs/blob/uploads/large-files.md): Multipart uploads from the browser, with progress, pause, resume, retries and cancel. +- [Abandoned Uploads](https://upstash.com/docs/blob/uploads/abandoned-uploads.md): Sweep the incomplete multipart uploads and pending rows left behind by uploads that never finished. + +## Recipes + +- [Overview](https://upstash.com/docs/blob/recipes/overview.md): Pick a recipe by the shape of your data, and the three rules that run under all of them. +- [Profile Pictures](https://upstash.com/docs/blob/recipes/avatars.md): One picture per user, overwritten in place, uploaded from the browser, with the old one out of the cache. +- [Product Images](https://upstash.com/docs/blob/recipes/product-images.md): Several ordered images per product, uploaded from the browser and rendered from your own rows. +- [Site Assets and CMS Media](https://upstash.com/docs/blob/recipes/site-assets.md): Editor uploads for a CMS, and site assets written by a deploy script. +- [AI-Generated Images](https://upstash.com/docs/blob/recipes/ai-images.md): Keep what a model generated, before the provider's temporary URL expires. +- [File Attachments](https://upstash.com/docs/blob/recipes/attachments.md): Several files per thread, uploaded from the browser as multipart, one row per attachment. +- [Video Uploads](https://upstash.com/docs/blob/recipes/video.md): Multi-gigabyte video uploaded straight from the browser, with progress and resume. +- [Private Documents](https://upstash.com/docs/blob/recipes/private-documents.md): One document per owner on a private bucket, handed out through short-lived signed URLs. +- [Generated Exports](https://upstash.com/docs/blob/recipes/exports.md): A background job builds the file, and the download link stops working after a day. + +## Reference + +- [Types](https://upstash.com/docs/blob/reference/types.md): Size, Duration, CacheOption, the record types, and the phases an upload moves through. +- [Errors](https://upstash.com/docs/blob/reference/errors.md): BlobError codes, what reaches the browser, and the platform body limits behind a 413. +- [How Signing Works](https://upstash.com/docs/blob/reference/signing.md): What the bucket token signs, how the direct upload handshake works, and what the browser gets to see. diff --git a/box/index.mdx b/box/index.mdx new file mode 100644 index 000000000..eddfae3e5 --- /dev/null +++ b/box/index.mdx @@ -0,0 +1,27 @@ +--- +title: "Upstash Box" +sidebarTitle: "Overview" +description: "Secure, isolated cloud containers with a built-in AI agent." +--- + +Every Upstash Box is a secure, isolated cloud container with an AI agent built in. Each box has its own filesystem, shell, git, network stack, and runtime. You send prompts or commands, the box runs them, and you get structured results back. + +## Start here + +- [Quickstart](/box/overall/quickstart): get an API key, install the SDK, create a box, and run your first task. +- [Box Basics](/box/overall/how-it-works): architecture, billing, and lifecycle. +- [Use Cases](/box/overall/use-cases) +- [Pricing & Limits](/box/overall/pricing) + +## Sections + +- [Basics](/box/overall/agent): the agent, custom agents and harnesses, git, shell, live sessions, filesystem, and snapshots. +- [Lifecycle](/box/overall/preview): public URLs, schedules, keep alive, and ephemeral boxes. +- [Security](/box/overall/security): secrets, network policy, and attached headers. +- [Browser](/box/overall/browser/overview): a cloud browser with tabs, page reading, AI actions, live view, recordings, and CDP. +- [Guides](/box/guides/remote-development): end-to-end setups for coding agents, frameworks, and agent platforms. + +## For AI agents + +- [/docs/box/llms.txt](https://upstash.com/docs/box/llms.txt) lists every Box page. +- Append `.md` to any page URL for its Markdown, for example [/docs/box/overall/quickstart.md](https://upstash.com/docs/box/overall/quickstart.md). diff --git a/box/llms.txt b/box/llms.txt new file mode 100644 index 000000000..9c292e6fa --- /dev/null +++ b/box/llms.txt @@ -0,0 +1,78 @@ +# Upstash Box + +> Secure, isolated cloud containers with a built-in AI agent. + +Every Upstash Box page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Introduction + +- [Upstash Box](https://upstash.com/docs/box.md): Secure, isolated cloud containers with a built-in AI agent. +- [Quickstart](https://upstash.com/docs/box/overall/quickstart.md) +- [Box Basics](https://upstash.com/docs/box/overall/how-it-works.md) +- [Use Cases](https://upstash.com/docs/box/overall/use-cases.md) +- [Pricing & Limits](https://upstash.com/docs/box/overall/pricing.md) + +## Basics + +- [Agent](https://upstash.com/docs/box/overall/agent.md) +- [Git](https://upstash.com/docs/box/overall/git.md) +- [Shell](https://upstash.com/docs/box/overall/shell.md) +- [Live Sessions](https://upstash.com/docs/box/overall/live-sessions.md) +- [Filesystem](https://upstash.com/docs/box/overall/files.md) +- [Snapshots](https://upstash.com/docs/box/overall/snapshots.md) + +## Basics > Custom Agents + +- [How to Add a Custom Agent](https://upstash.com/docs/box/overall/custom-agent.md) +- [Pi](https://upstash.com/docs/box/overall/custom-harness/pi.md) +- [Gemini](https://upstash.com/docs/box/overall/custom-harness/gemini.md) +- [Copilot CLI](https://upstash.com/docs/box/overall/custom-harness/copilot.md) +- [Aider](https://upstash.com/docs/box/overall/custom-harness/aider.md) +- [Goose](https://upstash.com/docs/box/overall/custom-harness/goose.md) +- [Amp](https://upstash.com/docs/box/overall/custom-harness/amp.md) +- [CrewAI](https://upstash.com/docs/box/overall/custom-harness/crewai.md) +- [Pydantic AI](https://upstash.com/docs/box/overall/custom-harness/pydantic-ai.md) + +## Lifecycle + +- [Public URLs](https://upstash.com/docs/box/overall/preview.md) +- [Schedules](https://upstash.com/docs/box/overall/schedules.md) +- [Keep Alive](https://upstash.com/docs/box/overall/keep-alive.md) +- [Ephemeral Box](https://upstash.com/docs/box/overall/ephemeral-box.md) + +## Security + +- [Security & Secrets](https://upstash.com/docs/box/overall/security.md) +- [Network Policy](https://upstash.com/docs/box/overall/network-policy.md) +- [Attach Headers](https://upstash.com/docs/box/overall/attach-headers.md) + +## Browser + +- [Browser](https://upstash.com/docs/box/overall/browser/overview.md) +- [Tabs & Navigation](https://upstash.com/docs/box/overall/browser/tabs.md) +- [Reading Pages](https://upstash.com/docs/box/overall/browser/reading-pages.md) +- [AI Actions](https://upstash.com/docs/box/overall/browser/ai-actions.md) +- [Live View](https://upstash.com/docs/box/overall/browser/live-view.md) +- [Recordings](https://upstash.com/docs/box/overall/browser/recordings.md) +- [Connect over CDP](https://upstash.com/docs/box/overall/browser/connect.md) +- [Cookbook](https://upstash.com/docs/box/overall/browser/cookbook.md): Runnable browser examples grouped by use case. Each one is self-contained: paste it, run it, read the output. + +## Guides + +- [Remote Development Environment for AI Coding Agents](https://upstash.com/docs/box/guides/remote-development.md): Turn an Upstash Box into a remote development environment. Your app runs in the cloud, you open it in your browser, and your coding agent does the work. +- [Host T3 Code in a Remote Sandbox](https://upstash.com/docs/box/guides/t3-code-setup.md): Run T3 Code in an Upstash Box and open it from any browser or phone. The box sleeps when you are away and wakes when you open the URL again. +- [Run a Next.js App in a Cloud Sandbox with a Public URL](https://upstash.com/docs/box/guides/nextjs-setup.md): Scaffold a Next.js app inside an Upstash Box, run the dev server, and open it from any browser through a public URL, all with the Box SDK. +- [Build an AI Code Review Agent for Pull Requests](https://upstash.com/docs/box/guides/code-review-agent.md): Build an AI code review agent with Upstash Box that clones a repo, inspects the pull request diff, and returns structured findings with severity and suggested fixes. +- [Sandbox Backend for LangChain Deep Agents](https://upstash.com/docs/box/guides/langchain-deep-agents.md): Use langchain-upstash-box as a Deep Agents sandbox backend, so the agent's shell and file tools run in an isolated Upstash Box instead of on your machine. +- [Playwright Web Scraping with a Cloud Browser](https://upstash.com/docs/box/guides/web-scraping-playwright.md): Scrape JavaScript-heavy sites with the managed headless Chromium in Upstash Box. Extract structured data through the SDK, then connect Playwright over CDP. +- [Run a Browser Use Agent on a Daily Schedule](https://upstash.com/docs/box/guides/browser-use.md): Run a Browser Use agent inside Upstash Box and schedule it with cron. The example agent reads Hacker News every morning and saves a report to the box. +- [Vercel AI SDK Code Interpreter and Shell Tools](https://upstash.com/docs/box/guides/ai-sdk-setup.md): Give Vercel AI SDK agents a cloud sandbox to run Python, JavaScript, and shell commands, manage files, and share app previews with Upstash Box. +- [Run TanStack AI Coding Agents in a Cloud Sandbox](https://upstash.com/docs/box/guides/tanstack-setup.md): Run TanStack AI coding agents like Claude Code, Codex, and OpenCode inside Upstash Box with the native @tanstack/ai-sandbox-upstash-box provider. +- [Vercel Eve Sandbox for Isolated Code Execution](https://upstash.com/docs/box/guides/eve-setup.md): Use @upstash/agentkit-eve to run Vercel Eve agent code in Upstash Box, with deny-all egress, setup baked into a snapshot, and one box per session. +- [Run Pi Agent Tool Calls in a Remote Sandbox](https://upstash.com/docs/box/guides/pi-setup.md): Use the @upstash/box-pi extension to run every Pi tool call in an Upstash Box, while the agent and your model API keys stay on your machine. +- [Self-Host an Always-On OpenClaw Agent in the Cloud](https://upstash.com/docs/box/guides/openclaw-setup.md): Install OpenClaw in a keep-alive Upstash Box over SSH, open its dashboard from your machine, and restart it automatically with an init script. +- [Self-Host Hermes Agent in a Cloud Sandbox](https://upstash.com/docs/box/guides/hermes-setup.md): Install the Hermes agent by Nous Research in a keep-alive Upstash Box over SSH, and restart it automatically with an init script. +- [Run Herdr Coding Agents in Isolated Cloud Sandboxes](https://upstash.com/docs/box/guides/herdr-setup.md): Use the Upstash Box plugin for Herdr to run coding agents from a Git worktree in their own box, then apply their changes locally as a reviewed patch. +- [Self-Hosted Sandboxes for Claude Managed Agents](https://upstash.com/docs/box/guides/claude-managed-agents.md): Use Upstash Box as a self-hosted sandbox for Claude Managed Agents. Claude runs on Anthropic's side, and each session's bash commands and file edits run in its own box. +- [Self-Hosted Sandboxes for the OpenAI Agents API](https://upstash.com/docs/box/guides/openai-agents-api.md): Use Upstash Box as a self-hosted sandbox for the OpenAI Agents API. The agent runs on OpenAI's side, and each session's commands run in its own box. +- [In-App Coding Agent with CopilotKit](https://upstash.com/docs/box/guides/copilotkit.md): Add a CopilotKit chat to your Next.js app where each user talks to a coding agent running in their own Upstash Box, next to its shell and files. diff --git a/docs.json b/docs.json index 3124636b2..2f6e72c7f 100644 --- a/docs.json +++ b/docs.json @@ -86,6 +86,7 @@ { "group": "Overall", "pages": [ + "redis/index", "redis/overall/getstarted", "redis/overall/pricing", "redis/overall/compatibility", @@ -1427,6 +1428,7 @@ { "group": "Overall", "pages": [ + "vector/index", "vector/overall/getstarted", "vector/overall/whatisvector", "vector/overall/pricing", @@ -1594,6 +1596,7 @@ { "group": "Overall", "pages": [ + "qstash/index", "qstash/overall/getstarted", "qstash/overall/usecases", "qstash/overall/pricing", @@ -1747,6 +1750,7 @@ { "group": "Getting Started", "pages": [ + "workflow/index", "workflow/getstarted", { "group": "Quickstarts", @@ -2011,6 +2015,7 @@ { "group": "Overall", "pages": [ + "search/index", "search/overall/getstarted", "search/overall/whatisupstashsearch", "search/overall/pricing" @@ -2112,6 +2117,7 @@ { "group": "Introduction", "pages": [ + "box/index", "box/overall/quickstart", "box/overall/how-it-works", "box/overall/use-cases", @@ -2204,6 +2210,7 @@ { "group": "Introduction", "pages": [ + "blob/index", "blob/overall/quickstart", "blob/overall/pricing" ] @@ -2263,6 +2270,7 @@ { "group": "Realtime", "pages": [ + "realtime/index", "realtime/overall/quickstart", "realtime/features/client-side", "realtime/features/server-side", diff --git a/llms-full.txt b/llms-full.txt index a210426ee..c920a85ce 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -38,7 +38,7 @@ The site deploys from `main`. Every pull request gets a Docs7 preview link and a ## llms.txt -`llms.txt` and `llms-full.txt` are generated from `docs.json` and the MDX files. Don't edit them by hand. After changing pages, run: +`llms.txt`, `llms-full.txt`, and each product's `/llms.txt` are generated from `docs.json` and the MDX files. Don't edit them by hand. After changing pages, run: ```sh cd llms && npm install && npm run build @@ -2736,6 +2736,28 @@ For a browser upload, use the [upload handler](/docs/blob/uploads/upload-handler +# Upstash Blob +Source: https://upstash.com/docs/blob + +Upstash Blob is S3-compatible object storage. `@upstash/blob` has a `Bucket` client for your server, and an upload handler plus React hooks that upload from the browser straight to storage. + +## Start here + +* [Quickstart](/docs/blob/overall/quickstart): create a bucket, upload a file from the browser, and read it back. +* [Pricing & Limits](/docs/blob/overall/pricing) + +## Sections + +* [Bucket](/docs/blob/bucket/connecting): connect, then write, read, delete, and cache objects. +* [Browser Uploads](/docs/blob/uploads/upload-handler): the upload handler and client, constraints, large files, and abandoned uploads. +* [Recipes](/docs/blob/recipes/overview): profile pictures, product images, site assets, AI images, attachments, video, private documents, and exports. +* [Reference](/docs/blob/reference/types): types, errors, and how signing works. + +## For AI agents + +* [/docs/blob/llms.txt](https://upstash.com/docs/blob/llms.txt) lists every Blob page. +* Append `.md` to any page URL for its Markdown, for example [/docs/blob/overall/quickstart.md](https://upstash.com/docs/blob/overall/quickstart.md). + # Pricing & Limits Source: https://upstash.com/docs/blob/overall/pricing @@ -7682,6 +7704,31 @@ To log in once and have every later script reuse that session, see the [login on * [Live view](/docs/box/overall/browser/live-view) and [recordings](/docs/box/overall/browser/recordings) to watch or replay a scrape. * [Browser cookbook](/docs/box/overall/browser/cookbook) for runnable examples across crawling, automation, and testing. +# Upstash Box +Source: https://upstash.com/docs/box + +Every Upstash Box is a secure, isolated cloud container with an AI agent built in. Each box has its own filesystem, shell, git, network stack, and runtime. You send prompts or commands, the box runs them, and you get structured results back. + +## Start here + +* [Quickstart](/docs/box/overall/quickstart): get an API key, install the SDK, create a box, and run your first task. +* [Box Basics](/docs/box/overall/how-it-works): architecture, billing, and lifecycle. +* [Use Cases](/docs/box/overall/use-cases) +* [Pricing & Limits](/docs/box/overall/pricing) + +## Sections + +* [Basics](/docs/box/overall/agent): the agent, custom agents and harnesses, git, shell, live sessions, filesystem, and snapshots. +* [Lifecycle](/docs/box/overall/preview): public URLs, schedules, keep alive, and ephemeral boxes. +* [Security](/docs/box/overall/security): secrets, network policy, and attached headers. +* [Browser](/docs/box/overall/browser/overview): a cloud browser with tabs, page reading, AI actions, live view, recordings, and CDP. +* [Guides](/docs/box/guides/remote-development): end-to-end setups for coding agents, frameworks, and agent platforms. + +## For AI agents + +* [/docs/box/llms.txt](https://upstash.com/docs/box/llms.txt) lists every Box page. +* Append `.md` to any page URL for its Markdown, for example [/docs/box/overall/quickstart.md](https://upstash.com/docs/box/overall/quickstart.md). + # Agent Source: https://upstash.com/docs/box/overall/agent @@ -19447,6 +19494,31 @@ When you save this header for your URL Group, it ensures that all headers are fo A URL Group also enables you to define multiple endpoints within group. When a publish request is made to a URL Group, all associated endpoints will be triggered, allowing you to fan-out a single webhook call to multiple destinations. +# Upstash QStash +Source: https://upstash.com/docs/qstash + +QStash is a serverless messaging and scheduling service. Instead of calling an endpoint directly, you publish a message to QStash, which delivers it to your API with retries, delays, schedules, and more. + +## Start here + +* [Getting Started](/docs/qstash/overall/getstarted): publish your first message. +* [Use Cases](/docs/qstash/overall/usecases) +* [Pricing & Limits](/docs/qstash/overall/pricing) + +## Sections + +* [Quickstarts](/docs/qstash/quickstarts/vercel-nextjs): Next.js, Python, Cloudflare Workers, AWS Lambda, Deno Deploy, and Go. +* [Features](/docs/qstash/features/background-jobs): background jobs, retries, schedules, queues, flow control, delays, URL groups, batching, callbacks, and dead letter queues. +* [Integrations](/docs/qstash/integrations/llm) +* [How To](/docs/qstash/howto/publishing): publishing, receiving, verifying signatures, local development, and more. +* [REST API](/docs/qstash/api/authentication) +* [SDKs](/docs/qstash/sdks/ts/overview): TypeScript and Python. + +## For AI agents + +* [/docs/qstash/llms.txt](https://upstash.com/docs/qstash/llms.txt) lists every QStash page. +* Append `.md` to any page URL for its Markdown, for example [/docs/qstash/overall/getstarted.md](https://upstash.com/docs/qstash/overall/getstarted.md). + # LLM with Anthropic Source: https://upstash.com/docs/qstash/integrations/anthropic @@ -23502,6 +23574,27 @@ Upstash Realtime is powered by Redis Streams, so no message is ever delivered tw 2. Client initiates reconnection before function timeout (default every 5 mins) 3. Redis auto-replays all messages sent during reconnect +# Upstash Realtime +Source: https://upstash.com/docs/realtime + +Upstash Realtime adds realtime features to Next.js projects. It is HTTP-based, built on Redis streams and server-sent events, with type-safe events, message history, and built-in authentication helpers. + +## Pages + +* [Quickstart](/docs/realtime/overall/quickstart): set up Realtime in a Next.js app. +* [Client-Side Usage](/docs/realtime/features/client-side): subscribe to events in React. +* [Server-Side Usage](/docs/realtime/features/server-side): emit events, subscribe to channels, and read history on the server. +* [Channels](/docs/realtime/features/channels) +* [Authentication](/docs/realtime/features/middleware) +* [History](/docs/realtime/features/history) +* [Deployment](/docs/realtime/features/serverless) +* [Pricing](/docs/realtime/overall/pricing) + +## For AI agents + +* [/docs/realtime/llms.txt](https://upstash.com/docs/realtime/llms.txt) lists every Realtime page. +* Append `.md` to any page URL for its Markdown, for example [/docs/realtime/overall/quickstart.md](https://upstash.com/docs/realtime/overall/quickstart.md). + # Pricing Source: https://upstash.com/docs/realtime/overall/pricing @@ -84040,6 +84133,37 @@ If you have any issue you can ask in our [Discord server](https://discord.gg/w9SenAtbme) or send email at [support@upstash.com](mailto:support@upstash.com) +# Upstash Redis +Source: https://upstash.com/docs/redis + +Upstash Redis is a serverless, Redis-compatible database. Connect with any Redis client over TCP, or over HTTP with the REST API and the `@upstash/redis` SDK from serverless and edge runtimes. + +## Start here + +* [Getting Started](/docs/redis/overall/getstarted): create a database in seconds. +* [Pricing & Limits](/docs/redis/overall/pricing) +* [Compatibility](/docs/redis/overall/compatibility): supported commands, modules, and protocols. +* [Connect Your Client](/docs/redis/howto/connect-client) + +## Sections + +* [Quickstarts](/docs/redis/quickstarts/aws-lambda): AWS Lambda, Vercel, Next.js, Python frameworks, Cloudflare Workers, and more. +* [How To](/docs/redis/howto/connect-client): connecting, upgrading, metrics, and database management. +* [SDKs](/docs/redis/sdks/ts/overview): TypeScript, Python, AgentKit, MCP, and analytics SDKs. +* [Features](/docs/redis/features/globaldatabase): global database, REST API, backups, durability, replication, eviction, and security. +* [Redis Search](/docs/redis/search/introduction): full-text search indexes inside Upstash Redis. +* [Security & Compliance](/docs/redis/help/production-checklist) +* [Integrations](/docs/redis/integrations/drizzle) +* [Tutorials](/docs/redis/tutorials/laravel_caching) +* [Troubleshooting](/docs/redis/troubleshooting/command_count_increases_unexpectedly): common errors and their fixes. +* [Command Reference](/docs/redis/commands/overview): every supported command, grouped by data type. +* [Rate Limiting](/docs/redis/sdks/ratelimit-ts/overview): rate limit SDKs for TypeScript and Python. + +## For AI agents + +* [/docs/redis/llms.txt](https://upstash.com/docs/redis/llms.txt) lists every Redis page. +* Append `.md` to any page URL for its Markdown, for example [/docs/redis/overall/getstarted.md](https://upstash.com/docs/redis/overall/getstarted.md). + # BullMQ with Upstash Redis Source: https://upstash.com/docs/redis/integrations/bullmq @@ -100419,6 +100543,36 @@ Both searches and document updates are counted as requests and charged at the sa A query that returns multiple documents counts as a single request. If you enable reranking, you'll be charged based on the number of documents reranked, with pricing per 100-document units. For example, reranking 99 documents costs 1 unit, while reranking 101 documents costs 2 units. +# Upstash Search +Source: https://upstash.com/docs/search + + +Creating new Upstash Search databases is no longer supported. For new projects, use [Upstash Vector](/docs/vector/overall/getstarted) instead. + + +Upstash Search combines full-text and semantic search with smart ranking and zero infrastructure to manage. It is a standalone product, separate from [Upstash Redis Search](/docs/redis/search/introduction). + +## Start here + +* [Getting Started](/docs/search/overall/getstarted) +* [What is Upstash Search?](/docs/search/overall/whatisupstashsearch) +* [Pricing & Limits](/docs/search/overall/pricing) + +## Sections + +* [Quickstarts](/docs/search/tutorials/nextjs): Next.js and docs search. +* [Search UI](/docs/search/ui/search-bar) +* [Features](/docs/search/features/algorithm): algorithm, indexes, content and metadata, filtering, reranking, and advanced settings. +* [SDKs](/docs/search/sdks/ts/getting-started): TypeScript and Python. +* [Integrations](/docs/search/integrations/docusaurus) +* [Tools](/docs/search/tools/databasemigrator) +* [FAQ](/docs/search/help/faq) + +## For AI agents + +* [/docs/search/llms.txt](https://upstash.com/docs/search/llms.txt) lists every Search page. +* Append `.md` to any page URL for its Markdown, for example [/docs/search/overall/getstarted.md](https://upstash.com/docs/search/overall/getstarted.md). + # Docusaurus Integration Source: https://upstash.com/docs/search/integrations/docusaurus @@ -107862,6 +108016,31 @@ Source: https://upstash.com/docs/vector/help/faq To upgrade from the free tier to the pay-as-you-go tier, simply enter your credit card information. This will automatically upgrade your account to the pay-as-you-go tier, allowing you to take advantage of the additional features and capabilities. +# Upstash Vector +Source: https://upstash.com/docs/vector + +Upstash Vector is a serverless vector database for high-performance vector search. Use it for retrieval augmented generation (RAG), semantic search, recommendations, and classification without managing infrastructure. + +## Start here + +* [Getting Started](/docs/vector/overall/getstarted): create an index and run your first query. +* [What is Upstash Vector?](/docs/vector/overall/whatisvector) +* [Pricing & Limits](/docs/vector/overall/pricing) + +## Sections + +* [Features](/docs/vector/features/algorithm): algorithm, similarity functions, hybrid and sparse indexes, metadata, filtering, embedding models, and namespaces. +* [REST API](/docs/vector/api/get-started) +* [SDKs](/docs/vector/sdks/ts/getting-started): TypeScript, Python, PHP, Go, and Semantic Cache. +* [Integrations](/docs/vector/integrations/ai-sdk): Vercel AI SDK, LangChain, LlamaIndex, and more. +* [Tutorials](/docs/vector/tutorials/semantic_search) +* [FAQ](/docs/vector/help/faq) + +## For AI agents + +* [/docs/vector/llms.txt](https://upstash.com/docs/vector/llms.txt) lists every Vector page. +* Append `.md` to any page URL for its Markdown, for example [/docs/vector/overall/getstarted.md](https://upstash.com/docs/vector/overall/getstarted.md). + # Vercel AI SDK with Upstash Vector Source: https://upstash.com/docs/vector/integrations/ai-sdk @@ -118924,6 +119103,31 @@ async def example(context: AsyncWorkflowContext[str]) -> None: You're now ready to perform any operation in the following steps. +# Upstash Workflow +Source: https://upstash.com/docs/workflow + +Upstash Workflow lets you write durable, reliable serverless functions, with delivery guarantees, automatic retries on failure, and scheduling, without managing infrastructure. + +## Start here + +* [Overview](/docs/workflow/getstarted): what Workflow is and where to start. +* [Quickstarts](/docs/workflow/quickstarts/platforms): supported platforms and framework guides for TypeScript and Python. +* [How Workflow Works](/docs/workflow/basics/how) +* [Caveats](/docs/workflow/basics/caveats) + +## Sections + +* [Core Concepts](/docs/workflow/basics/serve): workflow endpoints, local development, steps, the workflow client, and how-to guides. +* [Features](/docs/workflow/features/retries): retries, parallel steps, failure functions, dead letter queue, flow control, waiting for events, webhooks, and invoke. +* [Agents](/docs/workflow/agents/overview): build durable AI agents and agent patterns. +* [REST API](/docs/workflow/api-reference/runs/trigger-workflow-run): runs, logs, notify, DLQ, flow control, and signing keys. +* [Resources](/docs/workflow/integrations/openai): integrations, examples, and troubleshooting. + +## For AI agents + +* [/docs/workflow/llms.txt](https://upstash.com/docs/workflow/llms.txt) lists every Workflow page. +* Append `.md` to any page URL for its Markdown, for example [/docs/workflow/getstarted.md](https://upstash.com/docs/workflow/getstarted.md). + # Vercel AI SDK Source: https://upstash.com/docs/workflow/integrations/aisdk diff --git a/llms.txt b/llms.txt index 1e23ba1b7..3c84cfb2c 100644 --- a/llms.txt +++ b/llms.txt @@ -10,6 +10,19 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { results: [{ href, title, heading, snippet, tab }] }. Append .md to any page href for its markdown. +## Products + +Each product has a smaller index with only its own pages: + +- [Upstash Blob](https://upstash.com/docs/blob/llms.txt): S3-compatible object storage with a server client and direct browser uploads. +- [Upstash Box](https://upstash.com/docs/box/llms.txt): Secure, isolated cloud containers with a built-in AI agent. +- [Upstash QStash](https://upstash.com/docs/qstash/llms.txt): Serverless messaging and scheduling with guaranteed delivery and retries. +- [Upstash Realtime](https://upstash.com/docs/realtime/llms.txt): Type-safe realtime events for Next.js, built on Redis streams and SSE. +- [Upstash Redis](https://upstash.com/docs/redis/llms.txt): Serverless, Redis-compatible database with a REST API and global replication. +- [Upstash Search](https://upstash.com/docs/search/llms.txt): AI-powered search that combines full-text and semantic search. +- [Upstash Vector](https://upstash.com/docs/vector/llms.txt): Serverless vector database for similarity search, RAG, and recommendations. +- [Upstash Workflow](https://upstash.com/docs/workflow/llms.txt): Durable, reliable serverless functions with retries and scheduling. + ## Docs - [README](https://upstash.com/docs/README.md) @@ -45,6 +58,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Deleting](https://upstash.com/docs/blob/bucket/deleting.md): Delete one path, an array or a prefix, and clear out incomplete multipart uploads. - [Reading](https://upstash.com/docs/blob/bucket/reading.md): get, info, exists and list, public URLs, and signed read URLs on a private bucket. - [Writing](https://upstash.com/docs/blob/bucket/writing.md): put, unique paths, metadata, conditional writes, copy and move, and signed upload URLs. +- [Upstash Blob](https://upstash.com/docs/blob.md): S3-compatible object storage with a server client and direct browser uploads. - [Pricing & Limits](https://upstash.com/docs/blob/overall/pricing.md): What Upstash Blob costs, and where the current limits are listed. - [Quickstart](https://upstash.com/docs/blob/overall/quickstart.md): Create a bucket, upload a file straight from the browser, and read it back. - [AI-Generated Images](https://upstash.com/docs/blob/recipes/ai-images.md): Keep what a model generated, before the provider's temporary URL expires. @@ -81,6 +95,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Host T3 Code in a Remote Sandbox](https://upstash.com/docs/box/guides/t3-code-setup.md): Run T3 Code in an Upstash Box and open it from any browser or phone. The box sleeps when you are away and wakes when you open the URL again. - [Run TanStack AI Coding Agents in a Cloud Sandbox](https://upstash.com/docs/box/guides/tanstack-setup.md): Run TanStack AI coding agents like Claude Code, Codex, and OpenCode inside Upstash Box with the native @tanstack/ai-sandbox-upstash-box provider. - [Playwright Web Scraping with a Cloud Browser](https://upstash.com/docs/box/guides/web-scraping-playwright.md): Scrape JavaScript-heavy sites with the managed headless Chromium in Upstash Box. Extract structured data through the SDK, then connect Playwright over CDP. +- [Upstash Box](https://upstash.com/docs/box.md): Secure, isolated cloud containers with a built-in AI agent. - [Agent](https://upstash.com/docs/box/overall/agent.md) - [Attach Headers](https://upstash.com/docs/box/overall/attach-headers.md) - [AI Actions](https://upstash.com/docs/box/overall/browser/ai-actions.md) @@ -266,6 +281,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Verify Signatures](https://upstash.com/docs/qstash/howto/signature.md) - [Create URL Groups and Endpoints](https://upstash.com/docs/qstash/howto/url-group-endpoint.md) - [Use as Webhook Receiver](https://upstash.com/docs/qstash/howto/webhook.md) +- [Upstash QStash](https://upstash.com/docs/qstash.md): Serverless messaging and scheduling with guaranteed delivery and retries. - [LLM with Anthropic](https://upstash.com/docs/qstash/integrations/anthropic.md) - [Datadog - Upstash QStash Integration](https://upstash.com/docs/qstash/integrations/datadog.md) - [LLM - OpenAI](https://upstash.com/docs/qstash/integrations/llm.md) @@ -324,6 +340,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Authentication](https://upstash.com/docs/realtime/features/middleware.md) - [Server-Side Usage](https://upstash.com/docs/realtime/features/server-side.md) - [Deployment](https://upstash.com/docs/realtime/features/serverless.md) +- [Upstash Realtime](https://upstash.com/docs/realtime.md): Type-safe realtime events for Next.js, built on Redis streams and SSE. - [Pricing](https://upstash.com/docs/realtime/overall/pricing.md) - [Quickstart](https://upstash.com/docs/realtime/overall/quickstart.md) - [ARCOUNT](https://upstash.com/docs/redis/commands/array/arcount.md): Count the values stored in an array. @@ -695,6 +712,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Using redis-cli](https://upstash.com/docs/redis/howto/redis-cli.md): Connect to your Upstash Redis database with redis-cli. Learn how to install it, connect over TLS, run commands, and when to use TCP versus HTTP. - [Upgrade Your Database](https://upstash.com/docs/redis/howto/upgrade-database.md) - [Vercel - Upstash Redis Integration](https://upstash.com/docs/redis/howto/vercelintegration.md) +- [Upstash Redis](https://upstash.com/docs/redis.md): Serverless, Redis-compatible database with a REST API and global replication. - [BullMQ with Upstash Redis](https://upstash.com/docs/redis/integrations/bullmq.md) - [Celery with Upstash Redis](https://upstash.com/docs/redis/integrations/celery.md) - [DrizzleORM with Upstash Redis](https://upstash.com/docs/redis/integrations/drizzle.md) @@ -1274,6 +1292,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Indexes](https://upstash.com/docs/search/features/indexes.md) - [Reranking](https://upstash.com/docs/search/features/reranking.md) - [FAQ](https://upstash.com/docs/search/help/faq.md): Questions And Answers About Upstash Search +- [Upstash Search](https://upstash.com/docs/search.md): AI-powered search that combines full-text and semantic search. - [Docusaurus Integration](https://upstash.com/docs/search/integrations/docusaurus.md): AI-powered search component for Docusaurus using Upstash Search. - [Getting Started](https://upstash.com/docs/search/overall/getstarted.md): Creating an Upstash Search Database - [Pricing & Limits](https://upstash.com/docs/search/overall/pricing.md) @@ -1330,6 +1349,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Vector Similarity Functions](https://upstash.com/docs/vector/features/similarityfunctions.md) - [Sparse Indexes](https://upstash.com/docs/vector/features/sparseindexes.md) - [FAQ](https://upstash.com/docs/vector/help/faq.md) +- [Upstash Vector](https://upstash.com/docs/vector.md): Serverless vector database for similarity search, RAG, and recommendations. - [Vercel AI SDK with Upstash Vector](https://upstash.com/docs/vector/integrations/ai-sdk.md) - [Flowise with Upstash Vector and Redis](https://upstash.com/docs/vector/integrations/flowise.md) - [LangChain with Upstash Vector](https://upstash.com/docs/vector/integrations/langchain.md) @@ -1489,6 +1509,7 @@ Search these docs: GET https://upstash.com/docs/search?q= returns JSON { - [Singleton Workflows](https://upstash.com/docs/workflow/howto/singleton.md): Make sure only one run of a workflow is in progress at a time by reusing the same workflowRunId. - [Start a Run](https://upstash.com/docs/workflow/howto/start.md) - [Webhooks](https://upstash.com/docs/workflow/howto/use-webhooks.md) +- [Upstash Workflow](https://upstash.com/docs/workflow.md): Durable, reliable serverless functions with retries and scheduling. - [Vercel AI SDK](https://upstash.com/docs/workflow/integrations/aisdk.md) - [Anthropic](https://upstash.com/docs/workflow/integrations/anthropic.md) - [Datadog - Upstash QStash Integration](https://upstash.com/docs/workflow/integrations/datadog.md) diff --git a/llms/README.md b/llms/README.md index 4070448ad..9dc8a1ebc 100644 --- a/llms/README.md +++ b/llms/README.md @@ -18,17 +18,20 @@ llms/ └── check.ts # rebuilds and fails if the files are out of date ``` -Outputs are written to the docs root: +Outputs: -- `docs/llms.txt` -- `docs/llms-full.txt` +- `llms.txt` and `llms-full.txt` at the docs root +- `/llms.txt` for every product root: a top-level directory with an + `index.mdx`, served at `/docs/`. It lists the pages of each + navigation product whose pages mostly live in that directory, grouped by + sidebar group. The root `llms.txt` links them under `## Products`. ## Scripts ```sh npm install # one-time, from this folder -npm run build # regenerate llms.txt and llms-full.txt -npm run check # rebuild, then exit non-zero if either file changed +npm run build # regenerate every llms.txt and llms-full.txt +npm run check # rebuild, then exit non-zero if any file changed ``` `check` is what the GitHub workflow runs on every PR. If it finds the files diff --git a/llms/src/build.ts b/llms/src/build.ts index c9c5399b2..11a89f971 100644 --- a/llms/src/build.ts +++ b/llms/src/build.ts @@ -1,4 +1,4 @@ -import { existsSync, readdirSync, readFileSync, writeFileSync } from "node:fs"; +import { existsSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs"; import { dirname, join, relative } from "node:path"; import { fileURLToPath } from "node:url"; @@ -85,12 +85,35 @@ interface Entry { kind: "mdx" | "openapi"; } +/** A navigation entry with the group names above it, below its tab or product. */ +interface NavPage { + trail: string[]; + entry: Entry; +} + +/** + * A product root: a top-level directory with an `index.mdx`, served at + * `/docs/`. It gets its own `/llms.txt` listing the pages of every + * navigation product whose pages mostly live in that directory. + */ +interface ProductRoot { + dir: string; + title: string; + description?: string; + /** Products in this directory, the one with the most pages first. */ + products: { name: string; pages: NavPage[] }[]; +} + const entries: Entry[] = []; const openApiSpecs: { url: string }[] = []; +/** Navigation entries per tab or product name, in sidebar order. */ +const navPages = new Map(); addMdxEntry("README"); let currentGroupDepth = 0; +let currentRoot = ""; +const currentTrail: string[] = []; for (const item of walkNavigation({ docsRoot: DOCS_ROOT })) { handle(item); @@ -99,27 +122,45 @@ for (const item of walkNavigation({ docsRoot: DOCS_ROOT })) { addOrphanMdxFiles(); entries.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0)); +const productRoots = collectProductRoots(); + writeLlmsTxt(); writeLlmsFullTxt(); console.log(`Wrote ${LLMS_TXT}`); console.log(`Wrote ${LLMS_FULL_TXT}`); +for (const root of productRoots) { + const file = join(DOCS_ROOT, root.dir, "llms.txt"); + writeFileSync(file, productLlmsTxt(root)); + console.log(`Wrote ${file}`); +} +removeStaleProductLlmsTxts(); + function handle(item: WalkItem): void { if (item.type === "group") { currentGroupDepth = item.depth; + if (item.depth === 0) { + currentRoot = item.group; + currentTrail.length = 0; + } else { + currentTrail.length = item.depth - 1; + currentTrail.push(item.group); + } return; } if (item.type === "openapi") { for (const op of expandOpenApi(DOCS_ROOT, item.source, item.directory)) { - entries.push({ + const entry: Entry = { title: op.title, path: op.path, shortDescription: firstParagraph(op.description), fullBody: openApiBody(item.source, op.method, op.apiPath, op.description), kind: "openapi", - }); + }; + entries.push(entry); + addNavPage(entry, item.depth); } if (item.directory && currentGroupDepth === 2) { openApiSpecs.push({ url: `${SITE_URL}/${item.source}` }); @@ -128,13 +169,85 @@ function handle(item: WalkItem): void { } // type === "page" - entries.push({ + const entry: Entry = { title: item.metadata.title, path: item.path, shortDescription: firstParagraph(item.metadata.description), fullBody: item.content, kind: "mdx", + }; + entries.push(entry); + addNavPage(entry, item.depth); +} + +function addNavPage(entry: Entry, depth: number): void { + const pages = navPages.get(currentRoot) ?? []; + pages.push({ trail: currentTrail.slice(0, depth - 1), entry }); + navPages.set(currentRoot, pages); +} + +/** + * Assigns each tab or product to the top-level directory most of its pages + * live in, and keeps the directories that have an `index.mdx`. + */ +function collectProductRoots(): ProductRoot[] { + const roots = new Map(); + for (const [name, pages] of navPages) { + const counts = new Map(); + for (const { entry } of pages) { + const dir = entry.path.split("/")[0]; + counts.set(dir, (counts.get(dir) ?? 0) + 1); + } + const dir = [...counts].sort((a, b) => b[1] - a[1])[0]?.[0]; + const indexFile = dir && join(DOCS_ROOT, dir, "index.mdx"); + if (!indexFile || !existsSync(indexFile)) continue; + let root = roots.get(dir); + if (!root) { + const { metadata } = parseFrontmatter(readFileSync(indexFile, "utf-8")); + root = { + dir, + title: metadata.title || titleFromBasename(dir), + description: firstParagraph(metadata.description), + products: [], + }; + roots.set(dir, root); + } + root.products.push({ name, pages }); + } + for (const root of roots.values()) { + root.products.sort((a, b) => b.pages.length - a.pages.length); + } + return [...roots.values()].sort((a, b) => (a.dir < b.dir ? -1 : 1)); +} + +/** + * `/llms.txt`: the product's pages under one heading per navigation + * group (`Group > Nested group`), in order of first appearance in the sidebar. A top-level group named after + * the product is left out of the heading. Products that share the directory + * with a larger one (Rate Limit lives under redis/) get their name in front. + */ +function productLlmsTxt(root: ProductRoot): string { + const sections = new Map(); + const seen = new Set(); + root.products.forEach(({ name, pages }, i) => { + for (const { trail, entry } of pages) { + if (seen.has(entry.path)) continue; + seen.add(entry.path); + const groups = trail[0] === name ? trail.slice(1) : trail; + const heading = (i === 0 ? groups : [name, ...groups]).join(" > ") || name; + sections.set(heading, [...(sections.get(heading) ?? []), entry]); + } }); + + const lines: string[] = [`# ${root.title}`, ""]; + if (root.description) lines.push(`> ${root.description}`, ""); + lines.push( + `Every ${root.title} page, grouped by sidebar section. Links point to the Markdown version of each page; drop the \`.md\` suffix for HTML. The index of all Upstash docs is ${SITE_URL}/llms.txt. Search them with GET ${SITE_URL}/search?q=.`, + ); + for (const [heading, sectionEntries] of sections) { + lines.push("", `## ${heading}`, "", ...sectionEntries.map(bullet)); + } + return lines.join("\n") + "\n"; } function addMdxEntry(path: string): void { @@ -177,14 +290,21 @@ function writeLlmsTxt(): void { const lines: string[] = ["# Upstash Documentation", ""]; lines.push(PREAMBLE, ""); lines.push(SEARCH_SECTION, ""); + if (productRoots.length > 0) { + lines.push("## Products", "", "Each product has a smaller index with only its own pages:", ""); + for (const root of productRoots) { + const url = `${SITE_URL}/${root.dir}/llms.txt`; + lines.push( + root.description + ? `- [${root.title}](${url}): ${root.description}` + : `- [${root.title}](${url})`, + ); + } + lines.push(""); + } lines.push("## Docs", ""); for (const e of entries) { - const url = `${SITE_URL}/${e.path}.md`; - lines.push( - e.shortDescription - ? `- [${e.title}](${url}): ${e.shortDescription}` - : `- [${e.title}](${url})`, - ); + lines.push(bullet(e)); } if (openApiSpecs.length > 0) { lines.push("", "## OpenAPI Specs", ""); @@ -195,6 +315,29 @@ function writeLlmsTxt(): void { writeFileSync(LLMS_TXT, lines.join("\n") + "\n"); } +/** Deletes `/llms.txt` files left behind by directories that are no longer product roots. */ +function removeStaleProductLlmsTxts(): void { + const dirs = new Set(productRoots.map((root) => root.dir)); + for (const entry of readdirSync(DOCS_ROOT, { withFileTypes: true })) { + if (!entry.isDirectory() || dirs.has(entry.name) || SKIP_DIRS.has(entry.name)) continue; + const file = join(DOCS_ROOT, entry.name, "llms.txt"); + if (!existsSync(file)) continue; + unlinkSync(file); + console.log(`Removed ${file}`); + } +} + +/** `- [title](url.md): description`, the line format of every llms.txt index. */ +function bullet(e: Entry): string { + const url = pageUrl(e.path, ".md"); + return e.shortDescription ? `- [${e.title}](${url}): ${e.shortDescription}` : `- [${e.title}](${url})`; +} + +/** Published URL of a page. `/index` is served at `/`. */ +function pageUrl(path: string, suffix = ""): string { + return `${SITE_URL}/${path.replace(/\/index$/, "")}${suffix}`; +} + function isExcludedFromFullTxt(path: string): boolean { return FULL_TXT_SKIP.some((re) => re.test(path)); } @@ -220,12 +363,10 @@ function writeLlmsFullTxt(): void { chunks.push(`${SEARCH_SECTION}\n\n`); for (const e of entries) { if (isExcludedFromFullTxt(e.path)) { - const url = `${SITE_URL}/${e.path}.md`; - const desc = e.shortDescription ? `: ${e.shortDescription}` : ""; - chunks.push(`- [${e.title}](${url})${desc}\n`); + chunks.push(`${bullet(e)}\n`); continue; } - const url = `${SITE_URL}/${e.path}`; + const url = pageUrl(e.path); const body = e.kind === "mdx" ? normalizeMdxBody(e.fullBody) diff --git a/llms/src/check.ts b/llms/src/check.ts index ad5f43a6b..f992d31ed 100644 --- a/llms/src/check.ts +++ b/llms/src/check.ts @@ -12,14 +12,14 @@ execSync("npx tsx src/build.ts", { }); // Step 2: check whether the generated files differ from what's committed -const status = execSync("git status --porcelain -- llms.txt llms-full.txt", { +const status = execSync("git status --porcelain -- llms.txt llms-full.txt ':(glob)*/llms.txt'", { cwd: DOCS_ROOT, encoding: "utf-8", }).trim(); if (status) { console.error( - "\n >> Error: llms.txt / llms-full.txt are out of date. Run `npm run build` in llms/ and commit the result.\n", + "\n >> Error: llms.txt files are out of date. Run `npm run build` in llms/ and commit the result.\n", ); console.error("Changed files:\n"); console.error(status); @@ -27,4 +27,4 @@ if (status) { process.exit(1); } -console.log("llms.txt and llms-full.txt are up to date."); +console.log("llms.txt files are up to date."); diff --git a/llms/src/generator.ts b/llms/src/generator.ts index 2c0fedbe6..64365a177 100644 --- a/llms/src/generator.ts +++ b/llms/src/generator.ts @@ -57,10 +57,12 @@ export type WalkItem = | { type: "group"; group: string; depth: number } // `directory` is only present when the OpenAPI ref was given in object form. // Bare-string refs (`"openapi": "spec.yml"`) yield with source only. - | { type: "openapi"; source: string; directory?: string } + // `depth` is one more than the depth of the enclosing tab, product, or group. + | { type: "openapi"; source: string; directory?: string; depth: number } | { type: "page"; path: string; + depth: number; metadata: PageMetadata; content: string; }; @@ -109,7 +111,7 @@ function* walkRoot( // Yield it before iterating groups/pages so callers see the spec // associated with the tab. if ("openapi" in root && root.openapi) { - yield openApiItem(root.openapi); + yield openApiItem(root.openapi, 1); } if (root.groups) { @@ -135,13 +137,13 @@ function* walkGroup( } return; } - yield openApiItem(group.openapi); + yield openApiItem(group.openapi, depth + 1); } -function openApiItem(ref: OpenApiRef): WalkItem { +function openApiItem(ref: OpenApiRef, depth: number): WalkItem { return typeof ref === "string" - ? { type: "openapi", source: ref } - : { type: "openapi", source: ref.source, directory: ref.directory }; + ? { type: "openapi", source: ref, depth } + : { type: "openapi", source: ref.source, directory: ref.directory, depth }; } function* walkEntry( @@ -150,14 +152,14 @@ function* walkEntry( docsRoot: string, ): Generator { if (typeof entry === "string") { - const page = readPage(entry, docsRoot); + const page = readPage(entry, depth, docsRoot); if (page) yield page; } else { yield* walkGroup(entry, depth, docsRoot); } } -function readPage(path: string, docsRoot: string): WalkItem | null { +function readPage(path: string, depth: number, docsRoot: string): WalkItem | null { // Pages in docs.json omit the .mdx extension. // Some entries (e.g. "GET /redis/databases") reference operations inside // an OpenAPI spec rather than literal files. Skip those — the OpenAPI @@ -173,6 +175,7 @@ function readPage(path: string, docsRoot: string): WalkItem | null { return { type: "page", path, + depth, metadata: { title: metadata.title || deriveTitleFromPath(path), description: metadata.description, diff --git a/qstash/index.mdx b/qstash/index.mdx new file mode 100644 index 000000000..e90e77902 --- /dev/null +++ b/qstash/index.mdx @@ -0,0 +1,27 @@ +--- +title: "Upstash QStash" +sidebarTitle: "Overview" +description: "Serverless messaging and scheduling with guaranteed delivery and retries." +--- + +QStash is a serverless messaging and scheduling service. Instead of calling an endpoint directly, you publish a message to QStash, which delivers it to your API with retries, delays, schedules, and more. + +## Start here + +- [Getting Started](/qstash/overall/getstarted): publish your first message. +- [Use Cases](/qstash/overall/usecases) +- [Pricing & Limits](/qstash/overall/pricing) + +## Sections + +- [Quickstarts](/qstash/quickstarts/vercel-nextjs): Next.js, Python, Cloudflare Workers, AWS Lambda, Deno Deploy, and Go. +- [Features](/qstash/features/background-jobs): background jobs, retries, schedules, queues, flow control, delays, URL groups, batching, callbacks, and dead letter queues. +- [Integrations](/qstash/integrations/llm) +- [How To](/qstash/howto/publishing): publishing, receiving, verifying signatures, local development, and more. +- [REST API](/qstash/api/authentication) +- [SDKs](/qstash/sdks/ts/overview): TypeScript and Python. + +## For AI agents + +- [/docs/qstash/llms.txt](https://upstash.com/docs/qstash/llms.txt) lists every QStash page. +- Append `.md` to any page URL for its Markdown, for example [/docs/qstash/overall/getstarted.md](https://upstash.com/docs/qstash/overall/getstarted.md). diff --git a/qstash/llms.txt b/qstash/llms.txt new file mode 100644 index 000000000..3c597a78b --- /dev/null +++ b/qstash/llms.txt @@ -0,0 +1,165 @@ +# Upstash QStash + +> Serverless messaging and scheduling with guaranteed delivery and retries. + +Every Upstash QStash page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Overall + +- [Upstash QStash](https://upstash.com/docs/qstash.md): Serverless messaging and scheduling with guaranteed delivery and retries. +- [Getting Started](https://upstash.com/docs/qstash/overall/getstarted.md) +- [Use Cases](https://upstash.com/docs/qstash/overall/usecases.md) +- [Pricing & Limits](https://upstash.com/docs/qstash/overall/pricing.md) +- [Prod Pack & Enterprise](https://upstash.com/docs/qstash/overall/enterprise.md) +- [API Examples](https://upstash.com/docs/qstash/overall/apiexamples.md) +- [Compare](https://upstash.com/docs/qstash/overall/compare.md): How QStash compares to BullMQ, Kafka, Amazon SQS, Amazon SNS, and Google Pub/Sub. +- [Changelog](https://upstash.com/docs/qstash/overall/changelog.md) +- [Roadmap](https://upstash.com/docs/qstash/overall/roadmap.md) +- [llms.txt](https://upstash.com/docs/qstash/overall/llms-txt.md) + +## Quickstarts + +- [Next.js](https://upstash.com/docs/qstash/quickstarts/vercel-nextjs.md) +- [Python on Vercel](https://upstash.com/docs/qstash/quickstarts/python-vercel.md) +- [Cloudflare Workers](https://upstash.com/docs/qstash/quickstarts/cloudflare-workers.md) +- [AWS Lambda (Node)](https://upstash.com/docs/qstash/quickstarts/aws-lambda/nodejs.md) +- [AWS Lambda (Python)](https://upstash.com/docs/qstash/quickstarts/aws-lambda/python.md) +- [Deno Deploy](https://upstash.com/docs/qstash/quickstarts/deno-deploy.md) +- [Golang](https://upstash.com/docs/qstash/quickstarts/fly-io/go.md) + +## Features + +- [Background Jobs](https://upstash.com/docs/qstash/features/background-jobs.md) +- [Retry](https://upstash.com/docs/qstash/features/retry.md) +- [Schedules](https://upstash.com/docs/qstash/features/schedules.md) +- [Queues](https://upstash.com/docs/qstash/features/queues.md) +- [Flow Control](https://upstash.com/docs/qstash/features/flowcontrol.md) +- [Delay](https://upstash.com/docs/qstash/features/delay.md) +- [URL Groups](https://upstash.com/docs/qstash/features/url-groups.md) +- [Batching](https://upstash.com/docs/qstash/features/batch.md) +- [Callbacks](https://upstash.com/docs/qstash/features/callbacks.md) +- [Dead Letter Queues](https://upstash.com/docs/qstash/features/dlq.md) +- [At-Least-Once Delivery](https://upstash.com/docs/qstash/features/at-least-once.md) +- [Deduplication](https://upstash.com/docs/qstash/features/deduplication.md) +- [Security](https://upstash.com/docs/qstash/features/security.md) + +## Integrations + +- [LLM - OpenAI](https://upstash.com/docs/qstash/integrations/llm.md) +- [LLM with Anthropic](https://upstash.com/docs/qstash/integrations/anthropic.md) +- [Datadog - Upstash QStash Integration](https://upstash.com/docs/qstash/integrations/datadog.md) +- [Prometheus - Upstash QStash Integration](https://upstash.com/docs/qstash/integrations/prometheus.md) +- [Email - Resend](https://upstash.com/docs/qstash/integrations/resend.md) +- [Pipedream](https://upstash.com/docs/qstash/integrations/pipedream.md): Build and run workflows with 1000s of open source triggers and actions across 900+ apps. +- [n8n with QStash](https://upstash.com/docs/qstash/integrations/n8n.md) + +## How To + +- [Publish Messages](https://upstash.com/docs/qstash/howto/publishing.md) +- [Create URL Groups and Endpoints](https://upstash.com/docs/qstash/howto/url-group-endpoint.md) +- [Handling Failures](https://upstash.com/docs/qstash/howto/handling-failures.md) +- [Run a Delayed Message Now](https://upstash.com/docs/qstash/howto/retry-now.md) +- [Cancel Messages in Bulk](https://upstash.com/docs/qstash/howto/bulk-actions.md) +- [Receiving Messages](https://upstash.com/docs/qstash/howto/receiving.md): What do we send to your API? +- [Use as Webhook Receiver](https://upstash.com/docs/qstash/howto/webhook.md) +- [Select a Region](https://upstash.com/docs/qstash/howto/multi-region.md) +- [Local Development](https://upstash.com/docs/qstash/howto/local-development.md) +- [Local Tunnel](https://upstash.com/docs/qstash/howto/local-tunnel.md) +- [Read-only Token](https://upstash.com/docs/qstash/howto/readonly-token.md) +- [Redact Private Data](https://upstash.com/docs/qstash/howto/redact-fields.md): How to redact private data in your messages +- [Verify Signatures](https://upstash.com/docs/qstash/howto/signature.md) +- [Delete Schedules](https://upstash.com/docs/qstash/howto/delete-schedule.md) +- [Reset Token](https://upstash.com/docs/qstash/howto/reset-token.md) +- [Roll Your Signing Keys](https://upstash.com/docs/qstash/howto/roll-signing-keys.md) +- [Debug Logs](https://upstash.com/docs/qstash/howto/debug-logs.md) +- [Periodic Data Updates](https://upstash.com/docs/qstash/recipes/periodic-data-updates.md) + +## REST + +- [Authentication](https://upstash.com/docs/qstash/api/authentication.md): Authentication for the QStash API +- [API Rate Limit Response](https://upstash.com/docs/qstash/api/api-ratelimiting.md): This page documents the rate limiting behavior of our API and explains how to handle different types of rate limit errors. + +## REST > API + +- [Publish a Message](https://upstash.com/docs/qstash/api-reference/messages/publish-a-message.md): Publish a message to the specified destination +- [Enqueue a Message](https://upstash.com/docs/qstash/api-reference/messages/enqueue-a-message.md): Enqueue a message to the specified queue +- [Batch Messages](https://upstash.com/docs/qstash/api-reference/messages/batch-messages.md): Send multiple messages in a single request +- [Get a Message](https://upstash.com/docs/qstash/api-reference/messages/get-a-message.md): Retrieve details of a specific message +- [Cancel a Message](https://upstash.com/docs/qstash/api-reference/messages/cancel-a-message.md): Cancel a pending message +- [Retry a Message Now](https://upstash.com/docs/qstash/api-reference/messages/retry-a-message-now.md): Deliver a delayed message, or a message waiting for its next retry, immediately +- [Bulk Cancel Messages](https://upstash.com/docs/qstash/api-reference/messages/bulk-cancel-messages.md): Delete all pending messages +- [List Bulk Actions](https://upstash.com/docs/qstash/api-reference/bulk-actions/list-bulk-actions.md): List the bulk actions created by filter-based message cancels +- [Get a Bulk Action](https://upstash.com/docs/qstash/api-reference/bulk-actions/get-a-bulk-action.md): Retrieve the details and progress of a bulk action +- [Upsert a Queue](https://upstash.com/docs/qstash/api-reference/queues/upsert-a-queue.md): Updates or creates a queue +- [List Queues](https://upstash.com/docs/qstash/api-reference/queues/list-queues.md): List all your queues +- [Get a Queue](https://upstash.com/docs/qstash/api-reference/queues/get-a-queue.md): Get details of a specific queue +- [Delete a queue](https://upstash.com/docs/qstash/api-reference/queues/delete-a-queue.md): Deletes a queue +- [Pause Queue](https://upstash.com/docs/qstash/api-reference/queues/pause-queue.md): Pause a queue to stop the delivery of enqueued messages +- [Resume Queue](https://upstash.com/docs/qstash/api-reference/queues/resume-queue.md): Resumes a queue to starts the delivery of enqueued messages +- [Create a Schedule](https://upstash.com/docs/qstash/api-reference/schedules/create-a-schedule.md): Create a schedule to send messages periodically +- [List schedules](https://upstash.com/docs/qstash/api-reference/schedules/list-schedules.md): List all schedules +- [Get a Schedule](https://upstash.com/docs/qstash/api-reference/schedules/get-a-schedule.md): Get details of a specific schedule +- [Delete a Schedule](https://upstash.com/docs/qstash/api-reference/schedules/delete-a-schedule.md): Delete a schedule +- [Pause a Schedule](https://upstash.com/docs/qstash/api-reference/schedules/pause-a-schedule.md): Pause a Schedule +- [Resume a Schedule](https://upstash.com/docs/qstash/api-reference/schedules/resume-a-schedule.md): Resume a paused Schedule +- [List URL Groups](https://upstash.com/docs/qstash/api-reference/url-groups/list-url-groups.md): List all your URL Groups +- [Get a URL Group](https://upstash.com/docs/qstash/api-reference/url-groups/get-a-url-group.md): Retrieve details of a specific URL Group +- [Delete a URL Group](https://upstash.com/docs/qstash/api-reference/url-groups/delete-a-url-group.md): Delete a topic and all its endpoints +- [Upsert URL Group and Endpoint](https://upstash.com/docs/qstash/api-reference/url-groups/upsert-url-group-and-endpoint.md): Add an endpoint to a URL Group +- [Remove Endpoints](https://upstash.com/docs/qstash/api-reference/url-groups/remove-endpoints.md): Remove one or more endpoints from a URL Group +- [List DLQ messages](https://upstash.com/docs/qstash/api-reference/dlq/list-dlq-messages.md): List and paginate through all messages currently in the DLQ +- [Bulk Delete DLQ messages](https://upstash.com/docs/qstash/api-reference/dlq/bulk-delete-dlq-messages.md): Delete multiple messages from the DLQ +- [Get a DLQ message](https://upstash.com/docs/qstash/api-reference/dlq/get-a-dlq-message.md): Get a specific message from the DLQ +- [Delete a DLQ message](https://upstash.com/docs/qstash/api-reference/dlq/delete-a-dlq-message.md): Manually remove a message from the DLQ +- [Retry a DLQ message](https://upstash.com/docs/qstash/api-reference/dlq/retry-a-dlq-message.md): Retry delivery of a message from the DLQ +- [Bulk Retry DLQ messages](https://upstash.com/docs/qstash/api-reference/dlq/bulk-retry-dlq-messages.md): Retry delivery of multiple messages from the DLQ +- [List Flow Control Keys](https://upstash.com/docs/qstash/api-reference/flow-control/list-flow-control-keys.md): List all Flow Control keys +- [Get Flow Control Key](https://upstash.com/docs/qstash/api-reference/flow-control/get-flow-control-key.md): Get details of a specific Flow Control key +- [Pause Flow Control Key](https://upstash.com/docs/qstash/api-reference/flow-control/pause-flow-control-key.md): Pauses the delivery of messages associated with a specific flow-control key. +- [Resume Flow Control Key](https://upstash.com/docs/qstash/api-reference/flow-control/resume-flow-control-key.md): Resumes the delivery of messages associated with a specific flow-control key. +- [Pin Configuration for Flow Control Key](https://upstash.com/docs/qstash/api-reference/flow-control/pin-configuration-for-flow-control-key.md): Pins a processing configuration for a specific flow-control key. +- [Unpin Configuration for Flow Control Key](https://upstash.com/docs/qstash/api-reference/flow-control/unpin-configuration-for-flow-control-key.md): Removes the pinned configuration for a specific flow-control key. +- [Reset Rate for Flow Control Key](https://upstash.com/docs/qstash/api-reference/flow-control/reset-rate-for-flow-control-key.md): Resets the rate configuration state for a specific flow-control key. +- [Get Global Parallelism](https://upstash.com/docs/qstash/api-reference/flow-control/get-global-parallelism.md): Returns the current global parallelism usage across all flow control keys +- [Get Signing Keys](https://upstash.com/docs/qstash/api-reference/signing-keys/get-signing-keys.md): Retrieve your current and next signing keys +- [Rotate Signing Keys](https://upstash.com/docs/qstash/api-reference/signing-keys/rotate-signing-keys.md): Rotate your signing keys +- [List Logs](https://upstash.com/docs/qstash/api-reference/logs/list-logs.md): Paginate through logs of published messages + +## SDKs > Typescript + +- [Overview](https://upstash.com/docs/qstash/sdks/ts/overview.md) +- [Getting Started](https://upstash.com/docs/qstash/sdks/ts/gettingstarted.md) +- [Long-Running MCP Tools with QStash](https://upstash.com/docs/qstash/sdks/ts/mcp-tasks.md): Run long MCP tool calls durably on QStash with @upstash/mcp-toolkit. +- [MCP Events with QStash](https://upstash.com/docs/qstash/sdks/ts/mcp-events.md): Deliver MCP Events webhooks durably through QStash with @upstash/mcp-toolkit. + +## SDKs > Typescript > Examples + +- [Overview](https://upstash.com/docs/qstash/sdks/ts/examples/overview.md) +- [Publish](https://upstash.com/docs/qstash/sdks/ts/examples/publish.md) +- [Schedules](https://upstash.com/docs/qstash/sdks/ts/examples/schedules.md) +- [URL Groups](https://upstash.com/docs/qstash/sdks/ts/examples/url-groups.md) +- [DLQ](https://upstash.com/docs/qstash/sdks/ts/examples/dlq.md) +- [Logs](https://upstash.com/docs/qstash/sdks/ts/examples/logs.md) +- [Messages](https://upstash.com/docs/qstash/sdks/ts/examples/messages.md) +- [Receiver](https://upstash.com/docs/qstash/sdks/ts/examples/receiver.md) +- [Queues](https://upstash.com/docs/qstash/sdks/ts/examples/queues.md) +- [Flow Control](https://upstash.com/docs/qstash/sdks/ts/examples/flow-control.md) + +## SDKs > Python + +- [Overview](https://upstash.com/docs/qstash/sdks/py/overview.md) +- [Getting Started](https://upstash.com/docs/qstash/sdks/py/gettingstarted.md) + +## SDKs > Python > Examples + +- [Overview](https://upstash.com/docs/qstash/sdks/py/examples/overview.md) +- [Publish](https://upstash.com/docs/qstash/sdks/py/examples/publish.md) +- [Schedules](https://upstash.com/docs/qstash/sdks/py/examples/schedules.md) +- [URL Groups](https://upstash.com/docs/qstash/sdks/py/examples/url-groups.md) +- [DLQ](https://upstash.com/docs/qstash/sdks/py/examples/dlq.md) +- [Events](https://upstash.com/docs/qstash/sdks/py/examples/events.md) +- [Messages](https://upstash.com/docs/qstash/sdks/py/examples/messages.md) +- [Keys](https://upstash.com/docs/qstash/sdks/py/examples/keys.md) +- [Receiver](https://upstash.com/docs/qstash/sdks/py/examples/receiver.md) +- [Queues](https://upstash.com/docs/qstash/sdks/py/examples/queues.md) +- [Flow Control](https://upstash.com/docs/qstash/sdks/py/examples/flow-control.md) diff --git a/realtime/index.mdx b/realtime/index.mdx new file mode 100644 index 000000000..8870d6c03 --- /dev/null +++ b/realtime/index.mdx @@ -0,0 +1,23 @@ +--- +title: "Upstash Realtime" +sidebarTitle: "Overview" +description: "Type-safe realtime events for Next.js, built on Redis streams and SSE." +--- + +Upstash Realtime adds realtime features to Next.js projects. It is HTTP-based, built on Redis streams and server-sent events, with type-safe events, message history, and built-in authentication helpers. + +## Pages + +- [Quickstart](/realtime/overall/quickstart): set up Realtime in a Next.js app. +- [Client-Side Usage](/realtime/features/client-side): subscribe to events in React. +- [Server-Side Usage](/realtime/features/server-side): emit events, subscribe to channels, and read history on the server. +- [Channels](/realtime/features/channels) +- [Authentication](/realtime/features/middleware) +- [History](/realtime/features/history) +- [Deployment](/realtime/features/serverless) +- [Pricing](/realtime/overall/pricing) + +## For AI agents + +- [/docs/realtime/llms.txt](https://upstash.com/docs/realtime/llms.txt) lists every Realtime page. +- Append `.md` to any page URL for its Markdown, for example [/docs/realtime/overall/quickstart.md](https://upstash.com/docs/realtime/overall/quickstart.md). diff --git a/realtime/llms.txt b/realtime/llms.txt new file mode 100644 index 000000000..66bed22a2 --- /dev/null +++ b/realtime/llms.txt @@ -0,0 +1,17 @@ +# Upstash Realtime + +> Type-safe realtime events for Next.js, built on Redis streams and SSE. + +Every Upstash Realtime page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Realtime + +- [Upstash Realtime](https://upstash.com/docs/realtime.md): Type-safe realtime events for Next.js, built on Redis streams and SSE. +- [Quickstart](https://upstash.com/docs/realtime/overall/quickstart.md) +- [Client-Side Usage](https://upstash.com/docs/realtime/features/client-side.md) +- [Server-Side Usage](https://upstash.com/docs/realtime/features/server-side.md) +- [Channels](https://upstash.com/docs/realtime/features/channels.md) +- [Authentication](https://upstash.com/docs/realtime/features/middleware.md) +- [History](https://upstash.com/docs/realtime/features/history.md) +- [Deployment](https://upstash.com/docs/realtime/features/serverless.md) +- [Pricing](https://upstash.com/docs/realtime/overall/pricing.md) diff --git a/redis/index.mdx b/redis/index.mdx new file mode 100644 index 000000000..48bab2323 --- /dev/null +++ b/redis/index.mdx @@ -0,0 +1,33 @@ +--- +title: "Upstash Redis" +sidebarTitle: "Overview" +description: "Serverless, Redis-compatible database with a REST API and global replication." +--- + +Upstash Redis is a serverless, Redis-compatible database. Connect with any Redis client over TCP, or over HTTP with the REST API and the `@upstash/redis` SDK from serverless and edge runtimes. + +## Start here + +- [Getting Started](/redis/overall/getstarted): create a database in seconds. +- [Pricing & Limits](/redis/overall/pricing) +- [Compatibility](/redis/overall/compatibility): supported commands, modules, and protocols. +- [Connect Your Client](/redis/howto/connect-client) + +## Sections + +- [Quickstarts](/redis/quickstarts/aws-lambda): AWS Lambda, Vercel, Next.js, Python frameworks, Cloudflare Workers, and more. +- [How To](/redis/howto/connect-client): connecting, upgrading, metrics, and database management. +- [SDKs](/redis/sdks/ts/overview): TypeScript, Python, AgentKit, MCP, and analytics SDKs. +- [Features](/redis/features/globaldatabase): global database, REST API, backups, durability, replication, eviction, and security. +- [Redis Search](/redis/search/introduction): full-text search indexes inside Upstash Redis. +- [Security & Compliance](/redis/help/production-checklist) +- [Integrations](/redis/integrations/drizzle) +- [Tutorials](/redis/tutorials/laravel_caching) +- [Troubleshooting](/redis/troubleshooting/command_count_increases_unexpectedly): common errors and their fixes. +- [Command Reference](/redis/commands/overview): every supported command, grouped by data type. +- [Rate Limiting](/redis/sdks/ratelimit-ts/overview): rate limit SDKs for TypeScript and Python. + +## For AI agents + +- [/docs/redis/llms.txt](https://upstash.com/docs/redis/llms.txt) lists every Redis page. +- Append `.md` to any page URL for its Markdown, for example [/docs/redis/overall/getstarted.md](https://upstash.com/docs/redis/overall/getstarted.md). diff --git a/redis/llms.txt b/redis/llms.txt new file mode 100644 index 000000000..e73c7ad33 --- /dev/null +++ b/redis/llms.txt @@ -0,0 +1,1180 @@ +# Upstash Redis + +> Serverless, Redis-compatible database with a REST API and global replication. + +Every Upstash Redis page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Overall + +- [Upstash Redis](https://upstash.com/docs/redis.md): Serverless, Redis-compatible database with a REST API and global replication. +- [Getting Started](https://upstash.com/docs/redis/overall/getstarted.md): Create an Upstash Redis database in seconds +- [Pricing & Limits](https://upstash.com/docs/redis/overall/pricing.md) +- [Redis® API Compatibility: supported commands, modules, and protocols](https://upstash.com/docs/redis/overall/compatibility.md) +- [Changelog](https://upstash.com/docs/redis/overall/changelog.md) +- [Use Cases](https://upstash.com/docs/redis/overall/usecases.md) +- [Compare](https://upstash.com/docs/redis/overall/compare.md) +- [Prod Pack & Enterprise](https://upstash.com/docs/redis/overall/enterprise.md) +- [llms.txt](https://upstash.com/docs/redis/overall/llms-txt.md) + +## Quickstarts + +- [AWS Lambda](https://upstash.com/docs/redis/quickstarts/aws-lambda.md) +- [SST](https://upstash.com/docs/redis/quickstarts/sst.md) +- [Laravel](https://upstash.com/docs/redis/quickstarts/laravel.md) +- [Azure Functions](https://upstash.com/docs/redis/quickstarts/azure-functions.md) +- [Google Cloud Run functions](https://upstash.com/docs/redis/quickstarts/google-cloud-functions.md) +- [Elixir](https://upstash.com/docs/redis/quickstarts/elixir.md): Tutorial on Using Upstash Redis In Your Phoenix App and Deploying it on Fly. +- [Fly.io](https://upstash.com/docs/redis/quickstarts/fly.md) +- [Cloudflare Workers](https://upstash.com/docs/redis/quickstarts/cloudflareworkers.md) +- [Fastly](https://upstash.com/docs/redis/quickstarts/fastlycompute.md) +- [DigitalOcean](https://upstash.com/docs/redis/quickstarts/digitalocean.md) +- [Supabase Functions](https://upstash.com/docs/redis/quickstarts/supabase.md) +- [Deno Deploy](https://upstash.com/docs/redis/quickstarts/deno-deploy.md) +- [Koyeb](https://upstash.com/docs/redis/quickstarts/koyeb.md) + +## Quickstarts > Vercel Functions + +- [App Router](https://upstash.com/docs/redis/quickstarts/vercel-functions-app-router.md) +- [Pages Router](https://upstash.com/docs/redis/quickstarts/vercel-functions-pages-router.md) + +## Quickstarts > Next.js 16 + +- [App Router](https://upstash.com/docs/redis/quickstarts/nextjs-app-router.md) +- [Pages Router](https://upstash.com/docs/redis/quickstarts/nextjs-pages-router.md) + +## Quickstarts > Python + +- [FastAPI](https://upstash.com/docs/redis/quickstarts/fastapi.md) +- [Flask](https://upstash.com/docs/redis/quickstarts/flask.md) +- [Django](https://upstash.com/docs/redis/quickstarts/django.md) +- [AWS Lambda](https://upstash.com/docs/redis/quickstarts/python-aws-lambda.md) +- [Vercel Python Runtime](https://upstash.com/docs/redis/quickstarts/vercel-python-runtime.md) + +## How To + +- [Connect Your Client](https://upstash.com/docs/redis/howto/connect-client.md) +- [Connect with @upstash/redis](https://upstash.com/docs/redis/howto/connect-with-upstash-redis.md) +- [Using redis-cli](https://upstash.com/docs/redis/howto/redis-cli.md): Connect to your Upstash Redis database with redis-cli. Learn how to install it, connect over TLS, run commands, and when to use TCP versus HTTP. +- [Upgrade Your Database](https://upstash.com/docs/redis/howto/upgrade-database.md) +- [Metrics and Charts](https://upstash.com/docs/redis/howto/metrics-and-charts.md) +- [Insights](https://upstash.com/docs/redis/howto/insights.md): See how your Redis database is routed, how it performs, how close it is to its limits, and what its keyspace holds. +- [Monitor your usage](https://upstash.com/docs/redis/howto/monitoryourusage.md) +- [Import/Export Data](https://upstash.com/docs/redis/howto/importexport.md) +- [Listen Keyspace Notifications](https://upstash.com/docs/redis/howto/keyspacenotifications.md) +- [Use IP Allowlist](https://upstash.com/docs/redis/howto/ipallowlist.md) +- [Read Your Writes](https://upstash.com/docs/redis/howto/readyourwrites.md) +- [Migrate Regional to Global Database](https://upstash.com/docs/redis/howto/migratefromregionaltoglobal.md) + +## SDKs > Typescript + +- [Overview](https://upstash.com/docs/redis/sdks/ts/overview.md) +- [Get Started](https://upstash.com/docs/redis/sdks/ts/getstarted.md) +- [Deployment](https://upstash.com/docs/redis/sdks/ts/deployment.md) +- [Advanced](https://upstash.com/docs/redis/sdks/ts/advanced.md) +- [Retries](https://upstash.com/docs/redis/sdks/ts/retries.md) +- [Troubleshooting](https://upstash.com/docs/redis/sdks/ts/troubleshooting.md) +- [Developing or Testing](https://upstash.com/docs/redis/sdks/ts/developing.md) + +## SDKs > Typescript > Commands + +- [Overview](https://upstash.com/docs/redis/sdks/ts/commands/overview.md): Available Commands in @upstash/redis +- [Transactions](https://upstash.com/docs/redis/sdks/ts/commands/transaction.md): Transactions + +## SDKs > Typescript > Commands > Array + +- [ARSET](https://upstash.com/docs/redis/sdks/ts/commands/array/arset.md): Write consecutive values starting at an array index. +- [ARMSET](https://upstash.com/docs/redis/sdks/ts/commands/array/armset.md): Write values at several array indexes. +- [ARGET](https://upstash.com/docs/redis/sdks/ts/commands/array/arget.md): Read the value at an array index. +- [ARMGET](https://upstash.com/docs/redis/sdks/ts/commands/array/armget.md): Read several array slots in request order. +- [ARGETRANGE](https://upstash.com/docs/redis/sdks/ts/commands/array/argetrange.md): Read every slot in an inclusive array range. +- [ARSCAN](https://upstash.com/docs/redis/sdks/ts/commands/array/arscan.md): Read occupied array slots with their indexes. +- [ARGREP](https://upstash.com/docs/redis/sdks/ts/commands/array/argrep.md): Search array values using one or more predicates. +- [ARDEL](https://upstash.com/docs/redis/sdks/ts/commands/array/ardel.md): Delete array values without shifting later indexes. +- [ARDELRANGE](https://upstash.com/docs/redis/sdks/ts/commands/array/ardelrange.md): Delete occupied slots in one or more inclusive ranges. +- [ARCOUNT](https://upstash.com/docs/redis/sdks/ts/commands/array/arcount.md): Count the occupied slots in an array. +- [ARLEN](https://upstash.com/docs/redis/sdks/ts/commands/array/arlen.md): Get the highest occupied array index plus one. +- [ARINSERT](https://upstash.com/docs/redis/sdks/ts/commands/array/arinsert.md): Append values after the array append cursor. +- [ARRING](https://upstash.com/docs/redis/sdks/ts/commands/array/arring.md): Append values to a fixed-size ring buffer. +- [ARLASTITEMS](https://upstash.com/docs/redis/sdks/ts/commands/array/arlastitems.md): Read the most recently appended array values. +- [ARNEXT](https://upstash.com/docs/redis/sdks/ts/commands/array/arnext.md): Read the next append index without moving the cursor. +- [ARSEEK](https://upstash.com/docs/redis/sdks/ts/commands/array/arseek.md): Choose the index where the next append will write. +- [AROP](https://upstash.com/docs/redis/sdks/ts/commands/array/arop.md): Aggregate values in an inclusive array range. +- [ARINFO](https://upstash.com/docs/redis/sdks/ts/commands/array/arinfo.md): Inspect array size, storage layout, and append position. + +## SDKs > Typescript > Commands > Auth + +- [ECHO](https://upstash.com/docs/redis/sdks/ts/commands/auth/echo.md) +- [PING](https://upstash.com/docs/redis/sdks/ts/commands/auth/ping.md): Send a ping to the server and get a response if the server is alive. + +## SDKs > Typescript > Commands > Connection + +- [CLIENT SETINFO](https://upstash.com/docs/redis/sdks/ts/commands/connection/client_setinfo.md): Set client library name and version information. + +## SDKs > Typescript > Commands > Bitmap + +- [BITCOUNT](https://upstash.com/docs/redis/sdks/ts/commands/bitmap/bitcount.md): Count the number of set bits. +- [BITOP](https://upstash.com/docs/redis/sdks/ts/commands/bitmap/bitop.md): Perform bitwise operations between strings. +- [BITPOS](https://upstash.com/docs/redis/sdks/ts/commands/bitmap/bitpos.md): Find the position of the first set or clear bit (bit with a value of 1 or 0) in a Redis string key. +- [GETBIT](https://upstash.com/docs/redis/sdks/ts/commands/bitmap/getbit.md): Retrieve a single bit. +- [SETBIT](https://upstash.com/docs/redis/sdks/ts/commands/bitmap/setbit.md): Set a single bit in a string. + +## SDKs > Typescript > Commands > Functions + +- [FCALL](https://upstash.com/docs/redis/sdks/ts/commands/functions/call.md): Invoke a function. +- [FCALL_RO](https://upstash.com/docs/redis/sdks/ts/commands/functions/call_ro.md): Invoke a read-only function +- [FUNCTION DELETE](https://upstash.com/docs/redis/sdks/ts/commands/functions/delete.md): Delete a library and all its functions. +- [FUNCTION FLUSH](https://upstash.com/docs/redis/sdks/ts/commands/functions/flush.md): Delete all the libraries and functions. +- [FUNCTION LIST](https://upstash.com/docs/redis/sdks/ts/commands/functions/list.md): List details about the registered libraries and functions. +- [FUNCTION LOAD](https://upstash.com/docs/redis/sdks/ts/commands/functions/load.md): Load a library to Redis. +- [FUNCTION STATS](https://upstash.com/docs/redis/sdks/ts/commands/functions/stats.md): Return information about the function running engine. + +## SDKs > Typescript > Commands > Generic + +- [DEL](https://upstash.com/docs/redis/sdks/ts/commands/generic/del.md): Removes the specified keys. A key is ignored if it does not exist. +- [EXISTS](https://upstash.com/docs/redis/sdks/ts/commands/generic/exists.md): Check if a key exists. +- [EXPIRE](https://upstash.com/docs/redis/sdks/ts/commands/generic/expire.md): Sets a timeout on key. The key will automatically be deleted. +- [EXPIREAT](https://upstash.com/docs/redis/sdks/ts/commands/generic/expireat.md): Sets a timeout on key. The key will automatically be deleted. +- [KEYS](https://upstash.com/docs/redis/sdks/ts/commands/generic/keys.md): Returns all keys matching pattern. +- [PERSIST](https://upstash.com/docs/redis/sdks/ts/commands/generic/persist.md): Remove any timeout set on the key. +- [PEXPIRE](https://upstash.com/docs/redis/sdks/ts/commands/generic/pexpire.md): Sets a timeout on key. After the timeout has expired, the key will automatically be deleted. +- [PEXPIREAT](https://upstash.com/docs/redis/sdks/ts/commands/generic/pexpireat.md): Sets a timeout on key. After the timeout has expired, the key will automatically be deleted. +- [PTTL](https://upstash.com/docs/redis/sdks/ts/commands/generic/pttl.md): Return the expiration in milliseconds of a key. +- [RANDOMKEY](https://upstash.com/docs/redis/sdks/ts/commands/generic/randomkey.md): Returns a random key from database +- [RENAME](https://upstash.com/docs/redis/sdks/ts/commands/generic/rename.md): Rename a key +- [RENAMENX](https://upstash.com/docs/redis/sdks/ts/commands/generic/renamenx.md): Rename a key if it does not already exist. +- [SCAN](https://upstash.com/docs/redis/sdks/ts/commands/generic/scan.md): Scan the database for keys. +- [TOUCH](https://upstash.com/docs/redis/sdks/ts/commands/generic/touch.md): Alters the last access time of one or more keys +- [TTL](https://upstash.com/docs/redis/sdks/ts/commands/generic/ttl.md): Return the expiration in seconds of a key. +- [TYPE](https://upstash.com/docs/redis/sdks/ts/commands/generic/type.md): Get the type of a key. +- [UNLINK](https://upstash.com/docs/redis/sdks/ts/commands/generic/unlink.md): Removes the specified keys. A key is ignored if it does not exist. + +## SDKs > Typescript > Commands > Hash + +- [HDEL](https://upstash.com/docs/redis/sdks/ts/commands/hash/hdel.md): Deletes one or more hash fields. +- [HEXISTS](https://upstash.com/docs/redis/sdks/ts/commands/hash/hexists.md): Checks if a field exists in a hash. +- [HEXPIRE](https://upstash.com/docs/redis/sdks/ts/commands/hash/hexpire.md): Sets an expiration time for one or more fields in a hash. +- [HEXPIREAT](https://upstash.com/docs/redis/sdks/ts/commands/hash/hexpireat.md): Sets an expiration time for field(s) in a hash in seconds since the Unix epoch. +- [HEXPIRETIME](https://upstash.com/docs/redis/sdks/ts/commands/hash/hexpiretime.md): Retrieves the expiration time of field(s) in a hash in seconds. +- [HGET](https://upstash.com/docs/redis/sdks/ts/commands/hash/hget.md): Retrieves the value of a hash field. +- [HGETALL](https://upstash.com/docs/redis/sdks/ts/commands/hash/hgetall.md): Retrieves all fields from a hash. +- [HGETDEL](https://upstash.com/docs/redis/sdks/ts/commands/hash/hgetdel.md): Get and delete hash fields atomically. +- [HGETEX](https://upstash.com/docs/redis/sdks/ts/commands/hash/hgetex.md): Get hash fields with expiration support. +- [HINCRBY](https://upstash.com/docs/redis/sdks/ts/commands/hash/hincrby.md): Increments the value of a hash field by a given amount +- [HINCRBYFLOAT](https://upstash.com/docs/redis/sdks/ts/commands/hash/hincrbyfloat.md): Increments the value of a hash field by a given float value. +- [HKEYS](https://upstash.com/docs/redis/sdks/ts/commands/hash/hkeys.md): Return all field names in the hash stored at key. +- [HLEN](https://upstash.com/docs/redis/sdks/ts/commands/hash/hlen.md): Returns the number of fields contained in the hash stored at key. +- [HMGET](https://upstash.com/docs/redis/sdks/ts/commands/hash/hmget.md): Return the requested fields and their values. +- [HRANDFIELD](https://upstash.com/docs/redis/sdks/ts/commands/hash/hrandfield.md): Return a random field from a hash +- [HSCAN](https://upstash.com/docs/redis/sdks/ts/commands/hash/hscan.md): Scan a hash for fields. +- [HSET](https://upstash.com/docs/redis/sdks/ts/commands/hash/hset.md): Write one or more fields to a hash. +- [HSETEX](https://upstash.com/docs/redis/sdks/ts/commands/hash/hsetex.md): Set hash fields with expiration support. +- [HPERSIST](https://upstash.com/docs/redis/sdks/ts/commands/hash/hpersist.md): Remove the expiration from one or more fields in a hash. +- [HPEXPIRE](https://upstash.com/docs/redis/sdks/ts/commands/hash/hpexpire.md): Sets an expiration time for a field in a hash in milliseconds. +- [HPEXPIREAT](https://upstash.com/docs/redis/sdks/ts/commands/hash/hpexpireat.md): Sets an expiration time for field(s) in a hash in milliseconds since the Unix epoch. +- [HPEXPIRETIME](https://upstash.com/docs/redis/sdks/ts/commands/hash/hpexpiretime.md): Retrieves the expiration time of a field in a hash in milliseconds. +- [HPTTL](https://upstash.com/docs/redis/sdks/ts/commands/hash/hpttl.md): Retrieves the remaining time-to-live (TTL) for field(s) in a hash in milliseconds. +- [HSETNX](https://upstash.com/docs/redis/sdks/ts/commands/hash/hsetnx.md): Write a field to a hash but only if the field does not exist. +- [HSTRLEN](https://upstash.com/docs/redis/sdks/ts/commands/hash/hstrlen.md): Returns the string length of a value in a hash. +- [HTTL](https://upstash.com/docs/redis/sdks/ts/commands/hash/httl.md): Retrieves the remaining time-to-live (TTL) for field(s) in a hash in seconds. +- [HVALS](https://upstash.com/docs/redis/sdks/ts/commands/hash/hvals.md): Returns all values in the hash stored at key. + +## SDKs > Typescript > Commands > Json + +- [JSON.ARRAPPEND](https://upstash.com/docs/redis/sdks/ts/commands/json/arrappend.md): Append values to the array at path in the JSON document at key. +- [JSON.ARRINDEX](https://upstash.com/docs/redis/sdks/ts/commands/json/arrindex.md): Search for the first occurrence of a JSON value in an array. +- [JSON.ARRINSERT](https://upstash.com/docs/redis/sdks/ts/commands/json/arrinsert.md): Insert the json values into the array at path before the index (shifts to the right). +- [JSON.ARRLEN](https://upstash.com/docs/redis/sdks/ts/commands/json/arrlen.md): Report the length of the JSON array at `path` in `key`. +- [JSON.ARRPOP](https://upstash.com/docs/redis/sdks/ts/commands/json/arrpop.md): Remove and return an element from the index in the array. By default the last element from an array is popped. +- [JSON.ARRTRIM](https://upstash.com/docs/redis/sdks/ts/commands/json/arrtrim.md): Trim an array so that it contains only the specified inclusive range of elements. +- [JSON.CLEAR](https://upstash.com/docs/redis/sdks/ts/commands/json/clear.md): Clear container values (arrays/objects) and set numeric values to 0. +- [JSON.DEL](https://upstash.com/docs/redis/sdks/ts/commands/json/del.md): Delete a key from a JSON document. +- [JSON.FORGET](https://upstash.com/docs/redis/sdks/ts/commands/json/forget.md): Delete a key from a JSON document. +- [JSON.GET](https://upstash.com/docs/redis/sdks/ts/commands/json/get.md): Get a single value from a JSON document. +- [JSON.MERGE](https://upstash.com/docs/redis/sdks/ts/commands/json/merge.md): Merges the JSON value at path in key with the provided value. +- [JSON.MGET](https://upstash.com/docs/redis/sdks/ts/commands/json/mget.md): Get the same path from multiple JSON documents. +- [JSON.MSET](https://upstash.com/docs/redis/sdks/ts/commands/json/mset.md): Sets multiple JSON values at multiple paths in multiple keys. +- [JSON.NUMINCRBY](https://upstash.com/docs/redis/sdks/ts/commands/json/numincrby.md): Increment the number value stored at `path` by number. +- [JSON.NUMMULTBY](https://upstash.com/docs/redis/sdks/ts/commands/json/nummultby.md): Multiply the number value stored at `path` by number. +- [JSON.OBJKEYS](https://upstash.com/docs/redis/sdks/ts/commands/json/objkeys.md): Return the keys in the object that`s referenced by path. +- [JSON.OBJLEN](https://upstash.com/docs/redis/sdks/ts/commands/json/objlen.md): Report the number of keys in the JSON object at `path` in `key`. +- [JSON.SET](https://upstash.com/docs/redis/sdks/ts/commands/json/set.md): Set the JSON value at path in key. +- [JSON.STRAPPEND](https://upstash.com/docs/redis/sdks/ts/commands/json/strappend.md): Append the json-string values to the string at path. +- [JSON.STRLEN](https://upstash.com/docs/redis/sdks/ts/commands/json/strlen.md): Report the length of the JSON String at path in key +- [JSON.TOGGLE](https://upstash.com/docs/redis/sdks/ts/commands/json/toggle.md): Toggle a boolean value stored at `path`. +- [JSON.TYPE](https://upstash.com/docs/redis/sdks/ts/commands/json/type.md): Report the type of JSON value at `path`. + +## SDKs > Typescript > Commands > List + +- [LINDEX](https://upstash.com/docs/redis/sdks/ts/commands/list/lindex.md): Returns the element at index index in the list stored at key. +- [LINSERT](https://upstash.com/docs/redis/sdks/ts/commands/list/linsert.md): Insert an element before or after another element in a list +- [LLEN](https://upstash.com/docs/redis/sdks/ts/commands/list/llen.md): Returns the length of the list stored at key. +- [LMOVE](https://upstash.com/docs/redis/sdks/ts/commands/list/lmove.md): Move an element from one list to another. +- [LPOP](https://upstash.com/docs/redis/sdks/ts/commands/list/lpop.md): Remove and return the first element(s) of a list +- [LPOS](https://upstash.com/docs/redis/sdks/ts/commands/list/lpos.md): Returns the index of matching elements inside a list. +- [LPUSH](https://upstash.com/docs/redis/sdks/ts/commands/list/lpush.md): Push an element at the head of the list. +- [LPUSHX](https://upstash.com/docs/redis/sdks/ts/commands/list/lpushx.md): Push an element at the head of the list only if the list exists. +- [LRANGE](https://upstash.com/docs/redis/sdks/ts/commands/list/lrange.md): Returns the specified elements of the list stored at key. +- [LREM](https://upstash.com/docs/redis/sdks/ts/commands/list/lrem.md): Remove the first `count` occurrences of an element from a list. +- [LSET](https://upstash.com/docs/redis/sdks/ts/commands/list/lset.md): Set a value at a specific index. +- [LTRIM](https://upstash.com/docs/redis/sdks/ts/commands/list/ltrim.md): Trim a list to the specified range +- [RPOP](https://upstash.com/docs/redis/sdks/ts/commands/list/rpop.md): Remove and return the last element(s) of a list +- [RPUSH](https://upstash.com/docs/redis/sdks/ts/commands/list/rpush.md): Push an element at the end of the list. +- [RPUSHX](https://upstash.com/docs/redis/sdks/ts/commands/list/rpushx.md): Push an element at the end of the list only if the list exists. + +## SDKs > Typescript > Commands > PubSub + +- [PUBLISH](https://upstash.com/docs/redis/sdks/ts/commands/pubsub/publish.md): Publish a message to a channel +- [SUBSCRIBE](https://upstash.com/docs/redis/sdks/ts/commands/pubsub/subscribe.md): Subscribe to a channel +- [PSUBSCRIBE](https://upstash.com/docs/redis/sdks/ts/commands/pubsub/psubscribe.md): Subscribe to a channel by patterns/wildcards + +## SDKs > Typescript > Commands > Scripts + +- [EVAL](https://upstash.com/docs/redis/sdks/ts/commands/scripts/eval.md): Evaluate a Lua script server side. +- [EVAL_RO](https://upstash.com/docs/redis/sdks/ts/commands/scripts/eval_ro.md): Evaluate a read-only Lua script server side. +- [EVALSHA](https://upstash.com/docs/redis/sdks/ts/commands/scripts/evalsha.md): Evaluate a cached Lua script server side. +- [EVALSHA_RO](https://upstash.com/docs/redis/sdks/ts/commands/scripts/evalsha_ro.md): Evaluate a cached read-only Lua script server side. +- [SCRIPT EXISTS](https://upstash.com/docs/redis/sdks/ts/commands/scripts/script_exists.md): Check if scripts exist in the script cache. +- [SCRIPT FLUSH](https://upstash.com/docs/redis/sdks/ts/commands/scripts/script_flush.md): Removes all scripts from the script cache. +- [SCRIPT LOAD](https://upstash.com/docs/redis/sdks/ts/commands/scripts/script_load.md): Load the specified Lua script into the script cache. + +## SDKs > Typescript > Commands > Server + +- [DBSIZE](https://upstash.com/docs/redis/sdks/ts/commands/server/dbsize.md): Count the number of keys in the database. +- [FLUSHALL](https://upstash.com/docs/redis/sdks/ts/commands/server/flushall.md) +- [FLUSHDB](https://upstash.com/docs/redis/sdks/ts/commands/server/flushdb.md) + +## SDKs > Typescript > Commands > Set + +- [SADD](https://upstash.com/docs/redis/sdks/ts/commands/set/sadd.md): Adds one or more members to a set. +- [SCARD](https://upstash.com/docs/redis/sdks/ts/commands/set/scard.md): Return how many members are in a set +- [SDIFF](https://upstash.com/docs/redis/sdks/ts/commands/set/sdiff.md): Return the difference between sets +- [SDIFFSTORE](https://upstash.com/docs/redis/sdks/ts/commands/set/sdiffstore.md): Write the difference between sets to a new set +- [SINTER](https://upstash.com/docs/redis/sdks/ts/commands/set/sinter.md): Return the intersection between sets +- [SINTERSTORE](https://upstash.com/docs/redis/sdks/ts/commands/set/sinterstore.md): Return the intersection between sets and store the resulting set in a key +- [SISMEMBER](https://upstash.com/docs/redis/sdks/ts/commands/set/sismember.md): Check if a member exists in a set +- [SMEMBERS](https://upstash.com/docs/redis/sdks/ts/commands/set/smembers.md): Return all the members of a set +- [SMISMEMBER](https://upstash.com/docs/redis/sdks/ts/commands/set/smismember.md): Check if multiple members exist in a set +- [SMOVE](https://upstash.com/docs/redis/sdks/ts/commands/set/smove.md): Move a member from one set to another +- [SPOP](https://upstash.com/docs/redis/sdks/ts/commands/set/spop.md): Removes and returns one or more random members from a set. +- [SRANDMEMBER](https://upstash.com/docs/redis/sdks/ts/commands/set/srandmember.md): Returns one or more random members from a set. +- [SREM](https://upstash.com/docs/redis/sdks/ts/commands/set/srem.md): Remove one or more members from a set +- [SSCAN](https://upstash.com/docs/redis/sdks/ts/commands/set/sscan.md): Scan a set +- [SUNION](https://upstash.com/docs/redis/sdks/ts/commands/set/sunion.md): Return the union between sets +- [SUNIONSTORE](https://upstash.com/docs/redis/sdks/ts/commands/set/sunionstore.md): Return the union between sets and store the resulting set in a key + +## SDKs > Typescript > Commands > Sorted Set + +- [ZADD](https://upstash.com/docs/redis/sdks/ts/commands/zset/zadd.md): Add a member to a sorted set, or update its score if it already exists. +- [ZCARD](https://upstash.com/docs/redis/sdks/ts/commands/zset/zcard.md): Returns the number of elements in the sorted set stored at key. +- [ZCOUNT](https://upstash.com/docs/redis/sdks/ts/commands/zset/zcount.md): Returns the number of elements in the sorted set stored at key filterd by score. +- [ZDIFFSTORE](https://upstash.com/docs/redis/sdks/ts/commands/zset/zdiffstore.md): Writes the difference between sets to a new key. +- [ZINCRBY](https://upstash.com/docs/redis/sdks/ts/commands/zset/zincrby.md): Increment the score of a member. +- [ZINTERSTORE](https://upstash.com/docs/redis/sdks/ts/commands/zset/zinterstore.md): Writes the intersection between sets to a new key. +- [ZLEXCOUNT](https://upstash.com/docs/redis/sdks/ts/commands/zset/zlexcount.md): Returns the number of elements in the sorted set stored at key filtered by lex. +- [ZMSCORE](https://upstash.com/docs/redis/sdks/ts/commands/zset/zmscore.md): Returns the scores of multiple members. +- [ZPOPMAX](https://upstash.com/docs/redis/sdks/ts/commands/zset/zpopmax.md): Removes and returns up to count members with the highest scores in the sorted set stored at key. +- [ZPOPMIN](https://upstash.com/docs/redis/sdks/ts/commands/zset/zpopmin.md): Removes and returns up to count members with the lowest scores in the sorted set stored at key. +- [ZRANGE](https://upstash.com/docs/redis/sdks/ts/commands/zset/zrange.md): Returns the specified range of elements in the sorted set stored at key. +- [ZRANK](https://upstash.com/docs/redis/sdks/ts/commands/zset/zrank.md): Returns the rank of a member +- [ZREM](https://upstash.com/docs/redis/sdks/ts/commands/zset/zrem.md): Remove one or more members from a sorted set +- [ZREMRANGEBYLEX](https://upstash.com/docs/redis/sdks/ts/commands/zset/zremrangebylex.md): Remove all members in a sorted set between the given lexicographical range. +- [ZREMRANGEBYRANK](https://upstash.com/docs/redis/sdks/ts/commands/zset/zremrangebyrank.md): Remove all members in a sorted set between the given ranks. +- [ZREMRANGEBYSCORE](https://upstash.com/docs/redis/sdks/ts/commands/zset/zremrangebyscore.md): Remove all members in a sorted set between the given scores. +- [ZREVRANK](https://upstash.com/docs/redis/sdks/ts/commands/zset/zrevrank.md): Returns the rank of a member in a sorted set, with scores ordered from high to low. +- [ZSCAN](https://upstash.com/docs/redis/sdks/ts/commands/zset/zscan.md): Scan a sorted set +- [ZSCORE](https://upstash.com/docs/redis/sdks/ts/commands/zset/zscore.md): Returns the scores of a member. +- [ZUNIONSTORE](https://upstash.com/docs/redis/sdks/ts/commands/zset/zunionstore.md): Writes the union between sets to a new key. + +## SDKs > Typescript > Commands > Stream + +- [XACK](https://upstash.com/docs/redis/sdks/ts/commands/stream/xack.md): Removes one or multiple messages from the pending entries list of a stream consumer group. +- [XACKDEL](https://upstash.com/docs/redis/sdks/ts/commands/stream/xackdel.md): Acknowledge and delete stream entries atomically. +- [XADD](https://upstash.com/docs/redis/sdks/ts/commands/stream/xadd.md): Appends one or more new entries to a stream. +- [XAUTOCLAIM](https://upstash.com/docs/redis/sdks/ts/commands/stream/xautoclaim.md): Changes the ownership of pending messages from one consumer to another in a stream consumer group. +- [XCLAIM](https://upstash.com/docs/redis/sdks/ts/commands/stream/xclaim.md): Changes the ownership of pending messages from one consumer to another in a stream consumer group. +- [XDEL](https://upstash.com/docs/redis/sdks/ts/commands/stream/xdel.md): Removes the specified entries from a stream, and returns the number of entries deleted. +- [XDELEX](https://upstash.com/docs/redis/sdks/ts/commands/stream/xdelex.md): Extended delete for streams with reference control. +- [XGROUP](https://upstash.com/docs/redis/sdks/ts/commands/stream/xgroup.md): Manage consumer groups for Redis streams. +- [XINFO](https://upstash.com/docs/redis/sdks/ts/commands/stream/xinfo.md): Returns information about streams, consumer groups, and consumers. +- [XLEN](https://upstash.com/docs/redis/sdks/ts/commands/stream/xlen.md): Returns the number of entries inside a stream. +- [XPENDING](https://upstash.com/docs/redis/sdks/ts/commands/stream/xpending.md): Returns information about pending messages in a stream consumer group. +- [XRANGE](https://upstash.com/docs/redis/sdks/ts/commands/stream/xrange.md): Returns stream entries matching a given range of IDs. +- [XREAD](https://upstash.com/docs/redis/sdks/ts/commands/stream/xread.md): Reads data from one or multiple streams, starting from the specified IDs. +- [XREADGROUP](https://upstash.com/docs/redis/sdks/ts/commands/stream/xreadgroup.md): Reads data from a stream as part of a consumer group. +- [XREVRANGE](https://upstash.com/docs/redis/sdks/ts/commands/stream/xrevrange.md): Returns stream entries matching a given range of IDs in reverse order. +- [XTRIM](https://upstash.com/docs/redis/sdks/ts/commands/stream/xtrim.md): Trims the stream by removing entries to keep it at a reasonable size. + +## SDKs > Typescript > Commands > String + +- [APPEND](https://upstash.com/docs/redis/sdks/ts/commands/string/append.md): Append a value to a string stored at key. +- [DECR](https://upstash.com/docs/redis/sdks/ts/commands/string/decr.md): Decrement the integer value of a key by one +- [DECRBY](https://upstash.com/docs/redis/sdks/ts/commands/string/decrby.md): Decrement the integer value of a key by a given number. +- [GET](https://upstash.com/docs/redis/sdks/ts/commands/string/get.md): Return the value of the specified key or `null` if the key doesn't exist. +- [GETDEL](https://upstash.com/docs/redis/sdks/ts/commands/string/getdel.md): Return the value of the specified key and delete the key. +- [GETRANGE](https://upstash.com/docs/redis/sdks/ts/commands/string/getrange.md): Return a substring of value at the specified key. +- [GETSET](https://upstash.com/docs/redis/sdks/ts/commands/string/getset.md): Return the value of the specified key and replace it with a new value. +- [INCR](https://upstash.com/docs/redis/sdks/ts/commands/string/incr.md): Increment the integer value of a key by one +- [INCRBY](https://upstash.com/docs/redis/sdks/ts/commands/string/incrby.md): Increment the integer value of a key by a given number. +- [INCRBYFLOAT](https://upstash.com/docs/redis/sdks/ts/commands/string/incrbyfloat.md): Increment the float value of a key by a given number. +- [MGET](https://upstash.com/docs/redis/sdks/ts/commands/string/mget.md): Load multiple keys from Redis in one go. +- [MSET](https://upstash.com/docs/redis/sdks/ts/commands/string/mset.md): Set multiple keys in one go. +- [MSETNX](https://upstash.com/docs/redis/sdks/ts/commands/string/msetnx.md): Set multiple keys in one go unless they exist already. +- [SET](https://upstash.com/docs/redis/sdks/ts/commands/string/set.md): Set a key to hold a string value. +- [SETRANGE](https://upstash.com/docs/redis/sdks/ts/commands/string/setrange.md): Writes the value of key at offset. +- [STRLEN](https://upstash.com/docs/redis/sdks/ts/commands/string/strlen.md): Return the length of a string stored at a key. + +## SDKs > Typescript > Pipelining + +- [Pipeline & Transaction](https://upstash.com/docs/redis/sdks/ts/pipelining/pipeline-transaction.md) +- [Auto-Pipelining](https://upstash.com/docs/redis/sdks/ts/pipelining/auto-pipeline.md) + +## SDKs > Python + +- [Overview](https://upstash.com/docs/redis/sdks/py/overview.md) +- [Getting Started](https://upstash.com/docs/redis/sdks/py/gettingstarted.md) +- [Features](https://upstash.com/docs/redis/sdks/py/features.md) + +## SDKs > Python > Commands + +- [Overview](https://upstash.com/docs/redis/sdks/py/commands/overview.md): Available Commands in upstash-redis + +## SDKs > Python > Commands > Array + +- [ARSET](https://upstash.com/docs/redis/sdks/py/commands/array/arset.md): Write consecutive values starting at an array index. +- [ARMSET](https://upstash.com/docs/redis/sdks/py/commands/array/armset.md): Write values at several array indexes. +- [ARGET](https://upstash.com/docs/redis/sdks/py/commands/array/arget.md): Read the value at an array index. +- [ARMGET](https://upstash.com/docs/redis/sdks/py/commands/array/armget.md): Read several array slots in request order. +- [ARGETRANGE](https://upstash.com/docs/redis/sdks/py/commands/array/argetrange.md): Read every slot in an inclusive array range. +- [ARSCAN](https://upstash.com/docs/redis/sdks/py/commands/array/arscan.md): Read occupied array slots with their indexes. +- [ARGREP](https://upstash.com/docs/redis/sdks/py/commands/array/argrep.md): Search array values using one or more predicates. +- [ARDEL](https://upstash.com/docs/redis/sdks/py/commands/array/ardel.md): Delete array values without shifting later indexes. +- [ARDELRANGE](https://upstash.com/docs/redis/sdks/py/commands/array/ardelrange.md): Delete occupied slots in one or more inclusive ranges. +- [ARCOUNT](https://upstash.com/docs/redis/sdks/py/commands/array/arcount.md): Count the occupied slots in an array. +- [ARLEN](https://upstash.com/docs/redis/sdks/py/commands/array/arlen.md): Get the highest occupied array index plus one. +- [ARINSERT](https://upstash.com/docs/redis/sdks/py/commands/array/arinsert.md): Append values after the array append cursor. +- [ARRING](https://upstash.com/docs/redis/sdks/py/commands/array/arring.md): Append values to a fixed-size ring buffer. +- [ARLASTITEMS](https://upstash.com/docs/redis/sdks/py/commands/array/arlastitems.md): Read the most recently appended array values. +- [ARNEXT](https://upstash.com/docs/redis/sdks/py/commands/array/arnext.md): Read the next append index without moving the cursor. +- [ARSEEK](https://upstash.com/docs/redis/sdks/py/commands/array/arseek.md): Choose the index where the next append will write. +- [AROP](https://upstash.com/docs/redis/sdks/py/commands/array/arop.md): Aggregate values in an inclusive array range. +- [ARINFO](https://upstash.com/docs/redis/sdks/py/commands/array/arinfo.md): Inspect array size, storage layout, and append position. + +## SDKs > Python > Commands > Auth + +- [ECHO](https://upstash.com/docs/redis/sdks/py/commands/auth/echo.md) +- [PING](https://upstash.com/docs/redis/sdks/py/commands/auth/ping.md): Send a ping to the server and get a response if the server is alive. + +## SDKs > Python > Commands > Connection + +- [CLIENT SETINFO](https://upstash.com/docs/redis/sdks/py/commands/connection/client_setinfo.md): Set client library name and version information. + +## SDKs > Python > Commands > Bitmap + +- [BITCOUNT](https://upstash.com/docs/redis/sdks/py/commands/bitmap/bitcount.md): Count the number of set bits. +- [BITFIELD](https://upstash.com/docs/redis/sdks/py/commands/bitmap/bitfield.md): Sets or gets parts of a bitfield +- [BITOP](https://upstash.com/docs/redis/sdks/py/commands/bitmap/bitop.md): Perform bitwise operations between strings. +- [BITPOS](https://upstash.com/docs/redis/sdks/py/commands/bitmap/bitpos.md): Find the position of the first set or clear bit (bit with a value of 1 or 0) in a Redis string key. +- [GETBIT](https://upstash.com/docs/redis/sdks/py/commands/bitmap/getbit.md): Retrieve a single bit. + +## SDKs > Python > Commands > Generic + +- [DEL](https://upstash.com/docs/redis/sdks/py/commands/generic/del.md): Removes the specified keys. A key is ignored if it does not exist. +- [EXISTS](https://upstash.com/docs/redis/sdks/py/commands/generic/exists.md): Check if a key exists. +- [EXPIRE](https://upstash.com/docs/redis/sdks/py/commands/generic/expire.md): Sets a timeout on key. The key will automatically be deleted. +- [EXPIREAT](https://upstash.com/docs/redis/sdks/py/commands/generic/expireat.md): Sets a timeout on key. The key will automatically be deleted. +- [KEYS](https://upstash.com/docs/redis/sdks/py/commands/generic/keys.md): Returns all keys matching pattern. +- [PERSIST](https://upstash.com/docs/redis/sdks/py/commands/generic/persist.md): Remove any timeout set on the key. +- [PEXPIRE](https://upstash.com/docs/redis/sdks/py/commands/generic/pexpire.md): Sets a timeout on key. After the timeout has expired, the key will automatically be deleted. +- [PEXPIREAT](https://upstash.com/docs/redis/sdks/py/commands/generic/pexpireat.md): Sets a timeout on key. After the timeout has expired, the key will automatically be deleted. +- [PTTL](https://upstash.com/docs/redis/sdks/py/commands/generic/pttl.md): Return the expiration in milliseconds of a key. +- [RANDOMKEY](https://upstash.com/docs/redis/sdks/py/commands/generic/randomkey.md): Returns a random key from database +- [RENAME](https://upstash.com/docs/redis/sdks/py/commands/generic/rename.md): Rename a key +- [RENAMENX](https://upstash.com/docs/redis/sdks/py/commands/generic/renamenx.md): Rename a key if it does not already exist. +- [SCAN](https://upstash.com/docs/redis/sdks/py/commands/generic/scan.md): Scan the database for keys. +- [TOUCH](https://upstash.com/docs/redis/sdks/py/commands/generic/touch.md): Alters the last access time of one or more keys +- [TTL](https://upstash.com/docs/redis/sdks/py/commands/generic/ttl.md): Return the expiration in seconds of a key. +- [TYPE](https://upstash.com/docs/redis/sdks/py/commands/generic/type.md): Get the type of a key. +- [UNLINK](https://upstash.com/docs/redis/sdks/py/commands/generic/unlink.md): Removes the specified keys. A key is ignored if it does not exist. + +## SDKs > Python > Commands > Hash + +- [HDEL](https://upstash.com/docs/redis/sdks/py/commands/hash/hdel.md): Deletes one or more hash fields. +- [HEXISTS](https://upstash.com/docs/redis/sdks/py/commands/hash/hexists.md): Checks if a field exists in a hash. +- [HEXPIRE](https://upstash.com/docs/redis/sdks/py/commands/hash/hexpire.md): Set a timeout on a hash field in seconds. +- [HEXPIREAT](https://upstash.com/docs/redis/sdks/py/commands/hash/hexpireat.md): Sets an expiration time for field(s) in a hash in seconds since the Unix epoch. +- [HEXPIRETIME](https://upstash.com/docs/redis/sdks/py/commands/hash/hexpiretime.md): Retrieves the expiration time of field(s) in a hash in seconds. +- [HGET](https://upstash.com/docs/redis/sdks/py/commands/hash/hget.md): Retrieves the value of a hash field. +- [HGETALL](https://upstash.com/docs/redis/sdks/py/commands/hash/hgetall.md): Retrieves all fields from a hash. +- [HGETDEL](https://upstash.com/docs/redis/sdks/py/commands/hash/hgetdel.md): Get and delete hash fields atomically. +- [HGETEX](https://upstash.com/docs/redis/sdks/py/commands/hash/hgetex.md): Get hash fields with expiration support. +- [HINCRBY](https://upstash.com/docs/redis/sdks/py/commands/hash/hincrby.md): Increments the value of a hash field by a given amount +- [HINCRBYFLOAT](https://upstash.com/docs/redis/sdks/py/commands/hash/hincrbyfloat.md): Increments the value of a hash field by a given float value. +- [HKEYS](https://upstash.com/docs/redis/sdks/py/commands/hash/hkeys.md): Return all field names in the hash stored at key. +- [HLEN](https://upstash.com/docs/redis/sdks/py/commands/hash/hlen.md): Returns the number of fields contained in the hash stored at key. +- [HMGET](https://upstash.com/docs/redis/sdks/py/commands/hash/hmget.md): Return the requested fields and their values. +- [HRANDFIELD](https://upstash.com/docs/redis/sdks/py/commands/hash/hrandfield.md): Return a random field from a hash +- [HSCAN](https://upstash.com/docs/redis/sdks/py/commands/hash/hscan.md): Scan a hash for fields. +- [HSET](https://upstash.com/docs/redis/sdks/py/commands/hash/hset.md): Write one or more fields to a hash. +- [HPERSIST](https://upstash.com/docs/redis/sdks/py/commands/hash/hpersist.md): Remove the expiration from one or more hash fields. +- [HPEXPIRE](https://upstash.com/docs/redis/sdks/py/commands/hash/hpexpire.md): Set a timeout on a hash field in milliseconds. +- [HPEXPIREAT](https://upstash.com/docs/redis/sdks/py/commands/hash/hpexpireat.md): Sets an expiration time for field(s) in a hash in milliseconds since the Unix epoch. +- [HPEXPIRETIME](https://upstash.com/docs/redis/sdks/py/commands/hash/hpexpiretime.md): Retrieves the expiration time of a field in a hash in milliseconds. +- [HPTTL](https://upstash.com/docs/redis/sdks/py/commands/hash/hpttl.md): Retrieves the remaining time-to-live (TTL) for field(s) in a hash in milliseconds. +- [HMSET](https://upstash.com/docs/redis/sdks/py/commands/hash/hmset.md): Write multiple fields to a hash. +- [HSETEX](https://upstash.com/docs/redis/sdks/py/commands/hash/hsetex.md): Set hash fields with expiration support. +- [HSETNX](https://upstash.com/docs/redis/sdks/py/commands/hash/hsetnx.md): Write a field to a hash but only if the field does not exist. +- [HSTRLEN](https://upstash.com/docs/redis/sdks/py/commands/hash/hstrlen.md): Returns the string length of a value in a hash. +- [HTTL](https://upstash.com/docs/redis/sdks/py/commands/hash/httl.md): Retrieves the remaining time-to-live (TTL) for field(s) in a hash in seconds. +- [HVALS](https://upstash.com/docs/redis/sdks/py/commands/hash/hvals.md): Returns all values in the hash stored at key. + +## SDKs > Python > Commands > Json + +- [JSON.ARRAPPEND](https://upstash.com/docs/redis/sdks/py/commands/json/arrappend.md): Append values to the array at path in the JSON document at key. +- [JSON.ARRINDEX](https://upstash.com/docs/redis/sdks/py/commands/json/arrindex.md): Search for the first occurrence of a JSON value in an array. +- [JSON.ARRINSERT](https://upstash.com/docs/redis/sdks/py/commands/json/arrinsert.md): Insert the json values into the array at path before the index (shifts to the right). +- [JSON.ARRLEN](https://upstash.com/docs/redis/sdks/py/commands/json/arrlen.md): Report the length of the JSON array at `path` in `key`. +- [JSON.ARRPOP](https://upstash.com/docs/redis/sdks/py/commands/json/arrpop.md): Remove and return an element from the index in the array. By default the last element from an array is popped. +- [JSON.ARRTRIM](https://upstash.com/docs/redis/sdks/py/commands/json/arrtrim.md): Trim an array so that it contains only the specified inclusive range of elements. +- [JSON.CLEAR](https://upstash.com/docs/redis/sdks/py/commands/json/clear.md): Clear container values (arrays/objects) and set numeric values to 0. +- [JSON.DEL](https://upstash.com/docs/redis/sdks/py/commands/json/del.md): Delete a key from a JSON document. +- [JSON.FORGET](https://upstash.com/docs/redis/sdks/py/commands/json/forget.md): Delete a key from a JSON document. +- [JSON.GET](https://upstash.com/docs/redis/sdks/py/commands/json/get.md): Get a single value from a JSON document. +- [JSON.MERGE](https://upstash.com/docs/redis/sdks/py/commands/json/merge.md): Merges the JSON value at path in key with the provided value. +- [JSON.MGET](https://upstash.com/docs/redis/sdks/py/commands/json/mget.md): Get the same path from multiple JSON documents. +- [JSON.MSET](https://upstash.com/docs/redis/sdks/py/commands/json/mset.md): Sets multiple JSON values at multiple paths in multiple keys. +- [JSON.NUMINCRBY](https://upstash.com/docs/redis/sdks/py/commands/json/numincrby.md): Increment the number value stored at `path` by number. +- [JSON.NUMMULTBY](https://upstash.com/docs/redis/sdks/py/commands/json/nummultby.md): Multiply the number value stored at `path` by number. +- [JSON.OBJKEYS](https://upstash.com/docs/redis/sdks/py/commands/json/objkeys.md): Return the keys in the object that`s referenced by path. +- [JSON.OBJLEN](https://upstash.com/docs/redis/sdks/py/commands/json/objlen.md): Report the number of keys in the JSON object at `path` in `key`. +- [JSON.RESP](https://upstash.com/docs/redis/sdks/py/commands/json/resp.md): Return the value at the path in Redis serialization protocol format. +- [JSON.SET](https://upstash.com/docs/redis/sdks/py/commands/json/set.md): Set the JSON value at path in key. +- [JSON.STRAPPEND](https://upstash.com/docs/redis/sdks/py/commands/json/strappend.md): Append the json-string values to the string at path. +- [JSON.STRLEN](https://upstash.com/docs/redis/sdks/py/commands/json/strlen.md): Report the length of the JSON String at path in key +- [JSON.TOGGLE](https://upstash.com/docs/redis/sdks/py/commands/json/toggle.md): Toggle a boolean value stored at `path`. +- [JSON.TYPE](https://upstash.com/docs/redis/sdks/py/commands/json/type.md): Report the type of JSON value at `path`. + +## SDKs > Python > Commands > List + +- [LINDEX](https://upstash.com/docs/redis/sdks/py/commands/list/lindex.md): Returns the element at index index in the list stored at key. +- [LINSERT](https://upstash.com/docs/redis/sdks/py/commands/list/linsert.md): Insert an element before or after another element in a list +- [LLEN](https://upstash.com/docs/redis/sdks/py/commands/list/llen.md): Returns the length of the list stored at key. +- [LMOVE](https://upstash.com/docs/redis/sdks/py/commands/list/lmove.md): Move an element from one list to another. +- [LPOP](https://upstash.com/docs/redis/sdks/py/commands/list/lpop.md): Remove and return the first element(s) of a list +- [LPOS](https://upstash.com/docs/redis/sdks/py/commands/list/lpos.md): Returns the index of matching elements inside a list. +- [LPUSH](https://upstash.com/docs/redis/sdks/py/commands/list/lpush.md): Push an element at the head of the list. +- [LPUSHX](https://upstash.com/docs/redis/sdks/py/commands/list/lpushx.md): Push an element at the head of the list only if the list exists. +- [LRANGE](https://upstash.com/docs/redis/sdks/py/commands/list/lrange.md): Returns the specified elements of the list stored at key. +- [LREM](https://upstash.com/docs/redis/sdks/py/commands/list/lrem.md): Remove the first `count` occurrences of an element from a list. +- [LSET](https://upstash.com/docs/redis/sdks/py/commands/list/lset.md): Set a value at a specific index. +- [LTRIM](https://upstash.com/docs/redis/sdks/py/commands/list/ltrim.md): Trim a list to the specified range +- [RPOP](https://upstash.com/docs/redis/sdks/py/commands/list/rpop.md): Remove and return the last element(s) of a list +- [RPUSH](https://upstash.com/docs/redis/sdks/py/commands/list/rpush.md): Push an element at the end of the list. +- [RPUSHX](https://upstash.com/docs/redis/sdks/py/commands/list/rpushx.md): Push an element at the end of the list only if the list exists. + +## SDKs > Python > Commands > PubSub + +- [PUBLISH](https://upstash.com/docs/redis/sdks/py/commands/pubsub/publish.md): Publish a message to a channel + +## SDKs > Python > Commands > Scripts + +- [EVAL](https://upstash.com/docs/redis/sdks/py/commands/scripts/eval.md): Evaluate a Lua script server side. +- [EVAL_RO](https://upstash.com/docs/redis/sdks/py/commands/scripts/eval_ro.md): Evaluate a read-only Lua script server side. +- [EVALSHA](https://upstash.com/docs/redis/sdks/py/commands/scripts/evalsha.md): Evaluate a cached Lua script server side. +- [EVALSHA_RO](https://upstash.com/docs/redis/sdks/py/commands/scripts/evalsha_ro.md): Evaluate a cached read-only Lua script server side. +- [SCRIPT EXISTS](https://upstash.com/docs/redis/sdks/py/commands/scripts/script_exists.md): Check if scripts exist in the script cache. +- [SCRIPT FLUSH](https://upstash.com/docs/redis/sdks/py/commands/scripts/script_flush.md): Removes all scripts from the script cache. +- [SCRIPT LOAD](https://upstash.com/docs/redis/sdks/py/commands/scripts/script_load.md): Load the specified Lua script into the script cache. + +## SDKs > Python > Commands > Server + +- [DBSIZE](https://upstash.com/docs/redis/sdks/py/commands/server/dbsize.md): Count the number of keys in the database. +- [FLUSHALL](https://upstash.com/docs/redis/sdks/py/commands/server/flushall.md) +- [FLUSHDB](https://upstash.com/docs/redis/sdks/py/commands/server/flushdb.md) + +## SDKs > Python > Commands > Set + +- [SADD](https://upstash.com/docs/redis/sdks/py/commands/set/sadd.md): Adds one or more members to a set. +- [SCARD](https://upstash.com/docs/redis/sdks/py/commands/set/scard.md): Return how many members are in a set +- [SDIFF](https://upstash.com/docs/redis/sdks/py/commands/set/sdiff.md): Return the difference between sets +- [SDIFFSTORE](https://upstash.com/docs/redis/sdks/py/commands/set/sdiffstore.md): Write the difference between sets to a new set +- [SINTER](https://upstash.com/docs/redis/sdks/py/commands/set/sinter.md): Return the intersection between sets +- [SINTER](https://upstash.com/docs/redis/sdks/py/commands/set/sinterstore.md): Return the intersection between sets and store the resulting set in a key +- [SISMEMBER](https://upstash.com/docs/redis/sdks/py/commands/set/sismember.md): Check if a member exists in a set +- [SMEMBERS](https://upstash.com/docs/redis/sdks/py/commands/set/smembers.md): Return all the members of a set +- [SMISMEMBER](https://upstash.com/docs/redis/sdks/py/commands/set/smismember.md): Check if multiple members exist in a set +- [SMOVE](https://upstash.com/docs/redis/sdks/py/commands/set/smove.md): Move a member from one set to another +- [SPOP](https://upstash.com/docs/redis/sdks/py/commands/set/spop.md): Removes and returns one or more random members from a set. +- [SRANDMEMBER](https://upstash.com/docs/redis/sdks/py/commands/set/srandmember.md): Returns one or more random members from a set. +- [SREM](https://upstash.com/docs/redis/sdks/py/commands/set/srem.md): Remove one or more members from a set +- [SSCAN](https://upstash.com/docs/redis/sdks/py/commands/set/sscan.md): Scan a set +- [SUNION](https://upstash.com/docs/redis/sdks/py/commands/set/sunion.md): Return the union between sets +- [SUNIONSTORE](https://upstash.com/docs/redis/sdks/py/commands/set/sunionstore.md): Return the union between sets and store the resulting set in a key + +## SDKs > Python > Commands > Sorted Set + +- [ZADD](https://upstash.com/docs/redis/sdks/py/commands/zset/zadd.md): Add a member to a sorted set, or update its score if it already exists. +- [ZCARD](https://upstash.com/docs/redis/sdks/py/commands/zset/zcard.md): Returns the number of elements in the sorted set stored at key. +- [ZCOUNT](https://upstash.com/docs/redis/sdks/py/commands/zset/zcount.md): Returns the number of elements in the sorted set stored at key filterd by score. +- [ZDIFF](https://upstash.com/docs/redis/sdks/py/commands/zset/zdiff.md): Returns the difference between sets. +- [ZDIFFSTORE](https://upstash.com/docs/redis/sdks/py/commands/zset/zdiffstore.md): Writes the difference between sets to a new key. +- [ZINCRBY](https://upstash.com/docs/redis/sdks/py/commands/zset/zincrby.md): Increment the score of a member. +- [ZINTER](https://upstash.com/docs/redis/sdks/py/commands/zset/zinter.md): Returns the intersection between sets. +- [ZINTERSTORE](https://upstash.com/docs/redis/sdks/py/commands/zset/zinterstore.md): Calculates the intersection of sets and stores the result in a key +- [ZLEXCOUNT](https://upstash.com/docs/redis/sdks/py/commands/zset/zlexcount.md): Returns the number of elements in the sorted set stored at key filterd by lex. +- [ZMSCORE](https://upstash.com/docs/redis/sdks/py/commands/zset/zmscore.md): Returns the scores of multiple members. +- [ZPOPMAX](https://upstash.com/docs/redis/sdks/py/commands/zset/zpopmax.md): Removes and returns up to count members with the highest scores in the sorted set stored at key. +- [ZPOPMIN](https://upstash.com/docs/redis/sdks/py/commands/zset/zpopmin.md): Removes and returns up to count members with the lowest scores in the sorted set stored at key. +- [ZRANDMEMBER](https://upstash.com/docs/redis/sdks/py/commands/zset/zrandmember.md): Returns one or more random members from a sorted set, optionally with their scores. +- [ZRANGE](https://upstash.com/docs/redis/sdks/py/commands/zset/zrange.md): Returns the specified range of elements in the sorted set stored at key. +- [ZRANK](https://upstash.com/docs/redis/sdks/py/commands/zset/zrank.md): Returns the rank of a member +- [ZREM](https://upstash.com/docs/redis/sdks/py/commands/zset/zrem.md): Remove one or more members from a sorted set +- [ZREMRANGEBYLEX](https://upstash.com/docs/redis/sdks/py/commands/zset/zremrangebylex.md): Remove all members in a sorted set between the given lexicographical range. +- [ZREMRANGEBYRANK](https://upstash.com/docs/redis/sdks/py/commands/zset/zremrangebyrank.md): Remove all members in a sorted set between the given ranks. +- [ZREMRANGEBYSCORE](https://upstash.com/docs/redis/sdks/py/commands/zset/zremrangebyscore.md): Remove all members in a sorted set between the given scores. +- [ZREVRANK](https://upstash.com/docs/redis/sdks/py/commands/zset/zrevrank.md): Returns the rank of a member in a sorted set, with scores ordered from high to low. +- [ZSCAN](https://upstash.com/docs/redis/sdks/py/commands/zset/zscan.md): Scan a sorted set +- [ZSCORE](https://upstash.com/docs/redis/sdks/py/commands/zset/zscore.md): Returns the scores of a member. +- [ZINTER](https://upstash.com/docs/redis/sdks/py/commands/zset/zunion.md): Returns the intersection between sets. +- [ZUNIONSTORE](https://upstash.com/docs/redis/sdks/py/commands/zset/zunionstore.md): Writes the union between sets to a new key. + +## SDKs > Python > Commands > Stream + +- [XACK](https://upstash.com/docs/redis/sdks/py/commands/stream/xack.md): Removes one or multiple messages from the pending entries list of a stream consumer group. +- [XACKDEL](https://upstash.com/docs/redis/sdks/py/commands/stream/xackdel.md): Acknowledge and delete stream entries atomically. +- [XADD](https://upstash.com/docs/redis/sdks/py/commands/stream/xadd.md): Appends one or more new entries to a stream. +- [XAUTOCLAIM](https://upstash.com/docs/redis/sdks/py/commands/stream/xautoclaim.md): Changes the ownership of pending messages from one consumer to another in a stream consumer group automatically. +- [XCLAIM](https://upstash.com/docs/redis/sdks/py/commands/stream/xclaim.md): Changes the ownership of pending messages from one consumer to another in a stream consumer group. +- [XDEL](https://upstash.com/docs/redis/sdks/py/commands/stream/xdel.md): Removes the specified entries from a stream, and returns the number of entries deleted. +- [XDELEX](https://upstash.com/docs/redis/sdks/py/commands/stream/xdelex.md): Extended delete for streams with reference control. +- [XGROUP CREATE](https://upstash.com/docs/redis/sdks/py/commands/stream/xgroup_create.md): Create a new consumer group for a Redis stream. +- [XGROUP CREATECONSUMER](https://upstash.com/docs/redis/sdks/py/commands/stream/xgroup_createconsumer.md): Create a new consumer in an existing consumer group. +- [XGROUP DELCONSUMER](https://upstash.com/docs/redis/sdks/py/commands/stream/xgroup_delconsumer.md): Delete a consumer from a consumer group. +- [XGROUP DESTROY](https://upstash.com/docs/redis/sdks/py/commands/stream/xgroup_destroy.md): Delete an entire consumer group. +- [XGROUP SETID](https://upstash.com/docs/redis/sdks/py/commands/stream/xgroup_setid.md): Set the last delivered ID for a consumer group. +- [XINFO CONSUMERS](https://upstash.com/docs/redis/sdks/py/commands/stream/xinfo_consumers.md): List all consumers in a consumer group. +- [XINFO GROUPS](https://upstash.com/docs/redis/sdks/py/commands/stream/xinfo_groups.md): List all consumer groups for a stream. +- [XLEN](https://upstash.com/docs/redis/sdks/py/commands/stream/xlen.md): Returns the number of entries inside a stream. +- [XPENDING](https://upstash.com/docs/redis/sdks/py/commands/stream/xpending.md): Returns information about pending messages in a stream consumer group. +- [XRANGE](https://upstash.com/docs/redis/sdks/py/commands/stream/xrange.md): Returns stream entries matching a given range of IDs. +- [XREAD](https://upstash.com/docs/redis/sdks/py/commands/stream/xread.md): Reads data from one or multiple streams, starting from the specified IDs. +- [XREADGROUP](https://upstash.com/docs/redis/sdks/py/commands/stream/xreadgroup.md): Reads data from a stream as part of a consumer group. +- [XREVRANGE](https://upstash.com/docs/redis/sdks/py/commands/stream/xrevrange.md): Returns stream entries matching a given range of IDs in reverse order. +- [XTRIM](https://upstash.com/docs/redis/sdks/py/commands/stream/xtrim.md): Trims the stream by removing entries to keep it at a reasonable size. + +## SDKs > Python > Commands > String + +- [APPEND](https://upstash.com/docs/redis/sdks/py/commands/string/append.md): Append a value to a string stored at key. +- [DECR](https://upstash.com/docs/redis/sdks/py/commands/string/decr.md): Decrement the integer value of a key by one +- [DECRBY](https://upstash.com/docs/redis/sdks/py/commands/string/decrby.md): Decrement the integer value of a key by a given number. +- [GET](https://upstash.com/docs/redis/sdks/py/commands/string/get.md): Return the value of the specified key or `None` if the key doesn't exist. +- [GETDEL](https://upstash.com/docs/redis/sdks/py/commands/string/getdel.md): Return the value of the specified key and delete the key. +- [GETRANGE](https://upstash.com/docs/redis/sdks/py/commands/string/getrange.md): Return a substring of value at the specified key. +- [GETSET](https://upstash.com/docs/redis/sdks/py/commands/string/getset.md): Return the value of the specified key and replace it with a new value. +- [INCR](https://upstash.com/docs/redis/sdks/py/commands/string/incr.md): Increment the integer value of a key by one +- [INCRBYFLOAT](https://upstash.com/docs/redis/sdks/py/commands/string/incrbyfloat.md): Increment the float value of a key by a given number. +- [MGET](https://upstash.com/docs/redis/sdks/py/commands/string/mget.md): Load multiple keys from Redis in one go. +- [MSET](https://upstash.com/docs/redis/sdks/py/commands/string/mset.md): Set multiple keys in one go. +- [MSETNX](https://upstash.com/docs/redis/sdks/py/commands/string/msetnx.md): Set multiple keys in one go unless they exist already. +- [SET](https://upstash.com/docs/redis/sdks/py/commands/string/set.md): Set a key to hold a string value. +- [SETRANGE](https://upstash.com/docs/redis/sdks/py/commands/string/setrange.md): Writes the value of key at offset. +- [STRLEN](https://upstash.com/docs/redis/sdks/py/commands/string/strlen.md): Return the length of a string stored at a key. + +## SDKs > AgentKit + +- [Vercel AI SDK Memory, RAG & Chat History with Redis](https://upstash.com/docs/redis/sdks/agentkit/ai-sdk.md): Add long-term memory, RAG, and chat history to the Vercel AI SDK with Upstash Redis — drop-in tools for generateText and streamText, no separate vector database. +- [Memory, Chat History, RAG, Rate Limiting & Sandboxes for the Vercel Eve Agent Framework](https://upstash.com/docs/redis/sdks/agentkit/eve.md): Add long-term memory, searchable chat history, RAG, rate limiting, tool caching, and sandboxes to Vercel's Eve agent framework with Upstash Redis — no separate vector database. +- [TanStack AI Persistence, Resumable Streams & Memory with Redis](https://upstash.com/docs/redis/sdks/agentkit/tanstack-ai.md): Production backends for TanStack AI on Upstash Redis — chat persistence, resumable streams, distributed locks, long-term memory, tool caching, rate limiting, and RAG tools. +- [Long-Running MCP Tools with Redis and QStash](https://upstash.com/docs/redis/sdks/agentkit/mcp-tasks.md): Durable long-running tools for MCP servers: a tool answers with a task id at once, the work runs on QStash or Upstash Workflow, and the model polls for the result. Works in every MCP client. +- [MCP Events with Redis and QStash](https://upstash.com/docs/redis/sdks/agentkit/mcp-events.md): Let agents subscribe to events on your MCP server and get a signed webhook when one happens. Subscriptions live in Upstash Redis and deliveries are retried by QStash. + +## SDKs + +- [Upstash Redis MCP](https://upstash.com/docs/redis/sdks/mcp.md) +- [Realtime](https://upstash.com/docs/redis/sdks/realtime.md) +- [Agent Analytics](https://upstash.com/docs/redis/sdks/agent-analytics.md) +- [Redis Analytics](https://upstash.com/docs/redis/sdks/redis-analytics.md) + +## Features + +- [Global Database](https://upstash.com/docs/redis/features/globaldatabase.md) +- [REST API](https://upstash.com/docs/redis/features/restapi.md): Access your Upstash Redis database over HTTP, from serverless and edge runtimes where TCP connections are restricted. +- [Backup/Restore](https://upstash.com/docs/redis/features/backup.md) +- [Durable Storage](https://upstash.com/docs/redis/features/durability.md): This article explains the persistence provided by Upstash databases. +- [Replication](https://upstash.com/docs/redis/features/replication.md) +- [Key-Based Locking](https://upstash.com/docs/redis/features/key-locking.md): Key-based locks for concurrent command execution +- [Eviction](https://upstash.com/docs/redis/features/eviction.md) +- [Security](https://upstash.com/docs/redis/features/security.md) +- [Credential Protection](https://upstash.com/docs/redis/features/credential-protection.md) +- [Consistency](https://upstash.com/docs/redis/features/consistency.md) +- [Auto Upgrade](https://upstash.com/docs/redis/features/auto-upgrade.md) + +## Search + +- [Introduction](https://upstash.com/docs/redis/search/introduction.md) +- [Quickstart](https://upstash.com/docs/redis/search/getting-started.md) +- [Indices](https://upstash.com/docs/redis/search/index-management.md) +- [Document Updates](https://upstash.com/docs/redis/search/document-updates.md) +- [Schemas](https://upstash.com/docs/redis/search/schema-definition.md) +- [Queries](https://upstash.com/docs/redis/search/querying.md) +- [Searching Streams](https://upstash.com/docs/redis/search/streams.md): Index and search individual Redis stream entries. +- [Aggregations](https://upstash.com/docs/redis/search/aggregations.md) +- [Counting](https://upstash.com/docs/redis/search/counting.md) +- [Aliases](https://upstash.com/docs/redis/search/aliases.md) +- [Command Reference](https://upstash.com/docs/redis/search/command-reference.md): Browse the commands supported by Upstash Redis Search. +- [Troubleshooting](https://upstash.com/docs/redis/search/troubleshooting.md) + +## Search > Adapters + +- [ioredis](https://upstash.com/docs/redis/search/adapters/ioredis.md): Use Redis Search with ioredis via the @upstash/search-ioredis adapter +- [node-redis](https://upstash.com/docs/redis/search/adapters/node-redis.md): Use Redis Search with node-redis via the @upstash/search-redis adapter + +## Search > Query Operators > Boolean Operators + +- [Overview](https://upstash.com/docs/redis/search/query-operators/boolean-operators/overview.md) +- [$must](https://upstash.com/docs/redis/search/query-operators/boolean-operators/must.md) +- [$should](https://upstash.com/docs/redis/search/query-operators/boolean-operators/should.md) +- [$mustNot](https://upstash.com/docs/redis/search/query-operators/boolean-operators/must-not.md) +- [$boost](https://upstash.com/docs/redis/search/query-operators/boolean-operators/boost.md) + +## Search > Query Operators > Field Operators + +- [Overview](https://upstash.com/docs/redis/search/query-operators/field-operators/overview.md) +- [Smart Matching](https://upstash.com/docs/redis/search/query-operators/field-operators/smart-matching.md) +- [$eq](https://upstash.com/docs/redis/search/query-operators/field-operators/eq.md) +- [$in](https://upstash.com/docs/redis/search/query-operators/field-operators/in.md) +- [Range Operators](https://upstash.com/docs/redis/search/query-operators/field-operators/range-operators.md) +- [$phrase](https://upstash.com/docs/redis/search/query-operators/field-operators/phrase.md) +- [$fuzzy](https://upstash.com/docs/redis/search/query-operators/field-operators/fuzzy.md) +- [$regex](https://upstash.com/docs/redis/search/query-operators/field-operators/regex.md) +- [$boost](https://upstash.com/docs/redis/search/query-operators/field-operators/boost.md) + +## Search > Aggregation Operators > Metric Aggregations + +- [Overview](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/overview.md) +- [$avg](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/avg.md) +- [$sum](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/sum.md) +- [$min](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/min.md) +- [$max](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/max.md) +- [$count](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/count.md) +- [$cardinality](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/cardinality.md) +- [$stats](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/stats.md) +- [$extendedStats](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/extended-stats.md) +- [$percentiles](https://upstash.com/docs/redis/search/aggregation-operators/metric-aggregations/percentiles.md) + +## Search > Aggregation Operators > Bucket Aggregations + +- [Overview](https://upstash.com/docs/redis/search/aggregation-operators/bucket-aggregations/overview.md) +- [$terms](https://upstash.com/docs/redis/search/aggregation-operators/bucket-aggregations/terms.md) +- [$range](https://upstash.com/docs/redis/search/aggregation-operators/bucket-aggregations/range.md) +- [$histogram](https://upstash.com/docs/redis/search/aggregation-operators/bucket-aggregations/histogram.md) +- [$dateHistogram](https://upstash.com/docs/redis/search/aggregation-operators/bucket-aggregations/date-histogram.md) +- [$composite](https://upstash.com/docs/redis/search/aggregation-operators/bucket-aggregations/composite.md) +- [$facet](https://upstash.com/docs/redis/search/aggregation-operators/bucket-aggregations/facet.md) + +## Search > Recipes + +- [Overview](https://upstash.com/docs/redis/search/recipes/overview.md) +- [E-commerce Search](https://upstash.com/docs/redis/search/recipes/e-commerce-search.md) +- [Blog Search](https://upstash.com/docs/redis/search/recipes/blog-search.md) +- [User Directory](https://upstash.com/docs/redis/search/recipes/user-directory.md) + +## Security & Compliance + +- [Production Checklist](https://upstash.com/docs/redis/help/production-checklist.md) +- [Shared Responsibility Model](https://upstash.com/docs/redis/help/shared-responsibility-model.md) +- [Managing Healthcare Data](https://upstash.com/docs/redis/help/managing-healthcare-data.md) + +## Integrations + +- [DrizzleORM with Upstash Redis](https://upstash.com/docs/redis/integrations/drizzle.md) +- [Datadog - Upstash Redis Integration](https://upstash.com/docs/redis/howto/datadog.md) +- [Prometheus - Upstash Redis Integration](https://upstash.com/docs/redis/integrations/prometheus.md) +- [BullMQ with Upstash Redis](https://upstash.com/docs/redis/integrations/bullmq.md) +- [effect-mq with Upstash Redis](https://upstash.com/docs/redis/integrations/effect-mq.md) +- [Sidekiq with Upstash Redis](https://upstash.com/docs/redis/integrations/sidekiq.md) +- [Vercel - Upstash Redis Integration](https://upstash.com/docs/redis/howto/vercelintegration.md) +- [Replit Templates](https://upstash.com/docs/redis/integrations/replit-templates.md) +- [EMQX - Upstash Redis Integration](https://upstash.com/docs/redis/howto/emqxintegration.md) +- [Celery with Upstash Redis](https://upstash.com/docs/redis/integrations/celery.md) +- [n8n with Upstash Redis](https://upstash.com/docs/redis/integrations/n8n.md) + +## Tutorials + +- [Caching in Laravel with Redis](https://upstash.com/docs/redis/tutorials/laravel_caching.md) +- [Build a Real-Time Chat Application with Serverless Redis](https://upstash.com/docs/redis/tutorials/python_realtime_chat.md) +- [Manage Sessions in Python with Serverless Redis](https://upstash.com/docs/redis/tutorials/python_session.md) +- [Rate Limiting for Your FastAPI App](https://upstash.com/docs/redis/tutorials/python_rate_limiting.md) +- [Multithreaded Web Scraping with Redis Caching](https://upstash.com/docs/redis/tutorials/python_multithreading.md) +- [Redis as a Cache for Your FastAPI App](https://upstash.com/docs/redis/tutorials/python_fastapi_caching.md) +- [Building a URL Shortener with Redis](https://upstash.com/docs/redis/tutorials/python_url_shortener.md) +- [Deploy a Serverless API with AWS CDK and AWS Lambda](https://upstash.com/docs/redis/tutorials/api_with_cdk.md) +- [Agent Memory with Redis Search](https://upstash.com/docs/redis/tutorials/agent_memory.md): Build short-term and long-term memory for AI agents on Upstash Redis. Store working memory with TTLs and recall long-term memories with Redis Search full-text queries. +- [TanStack AI Chat Persistance](https://upstash.com/docs/redis/tutorials/tanstack_chat_persistence.md): Use Upstash Redis to persist TanStack AI chat histories across reloads, navigation, and devices with a simple adapter. +- [Autocomplete API with Serverless Redis](https://upstash.com/docs/redis/tutorials/auto_complete_with_serverless_redis.md) +- [Build Stateful Applications with AWS App Runner and Serverless Redis](https://upstash.com/docs/redis/tutorials/aws_app_runner_with_redis.md): This tutorial shows how to create a serverless and stateful application using AWS App Runner and Redis +- [Session Management on Google Cloud Run with Serverless Redis](https://upstash.com/docs/redis/tutorials/cloud_run_sessions.md): This tutorial shows how to manage user sessions on Google Cloud Run using Serverless Redis. +- [Use Redis in Cloudflare Workers](https://upstash.com/docs/redis/tutorials/cloudflare_workers_with_redis.md) +- [Cloudflare Workers with Websockets and Redis](https://upstash.com/docs/redis/tutorials/cloudflare_websockets_redis.md) +- [Build a Leaderboard API At Edge using Cloudflare Workers and Redis](https://upstash.com/docs/redis/tutorials/edge_leaderboard.md): This tutorial shows how to build a Leaderboard API At Edge using Cloudflare Workers and Redis. +- [Express Session with Serverless Redis](https://upstash.com/docs/redis/tutorials/express_session.md): This tutorial shows how to use Upstash as the session storage of your Express application. +- [Serverless Golang API with Redis](https://upstash.com/docs/redis/tutorials/goapi.md) +- [Build a Serverless Histogram API with Redis](https://upstash.com/docs/redis/tutorials/histogram.md): This tutorial shows how to build a histogram API with Redis. +- [Job Processing and Event Queue with Serverless Redis](https://upstash.com/docs/redis/tutorials/job_processing.md): This tutorial shows how to use Upstash Redis for job/task processing. +- [Redis Queue: From FIFO Lists to a Job Queue](https://upstash.com/docs/redis/tutorials/redis_queue.md): How to build FIFO, reliable, and blocking queues on Upstash Redis, then a delayed and prioritized job queue with a dead-letter queue. +- [Next.js with Redis](https://upstash.com/docs/redis/tutorials/nextjs_with_redis.md) +- [Building a Serverless Notification API for Your Web Application with Redis](https://upstash.com/docs/redis/tutorials/notification.md): This tutorial shows how to create a Serverless Notification API for Your Web Application with Redis. +- [Nuxt with Redis](https://upstash.com/docs/redis/tutorials/nuxtjs_with_redis.md): This tutorial shows how to use Upstash inside your Nuxt application. +- [Serverless Python API with Redis](https://upstash.com/docs/redis/tutorials/pythonapi.md) +- [AWS Lambda Rate Limiting with Serverless Redis](https://upstash.com/docs/redis/tutorials/rate-limiting.md) +- [Serverless Redisson](https://upstash.com/docs/redis/tutorials/redisson.md): This tutorial shows how to use Upstash with Redisson client. +- [Roadmap Voting App with Serverless Redis](https://upstash.com/docs/redis/tutorials/roadmapvotingapp.md): This is a single page application powered by upstash and next.js. +- [Serverless API with Java and Redis](https://upstash.com/docs/redis/tutorials/serverless_java_redis.md) +- [Using AWS SAM](https://upstash.com/docs/redis/tutorials/using_aws_sam.md) +- [Serverless Redis on Google Cloud Run functions](https://upstash.com/docs/redis/tutorials/using_google_cloud_functions.md) +- [Using Serverless Framework](https://upstash.com/docs/redis/tutorials/using_serverless_framework.md) + +## Troubleshooting + +- [Unexpected Increase in Command Count](https://upstash.com/docs/redis/troubleshooting/command_count_increases_unexpectedly.md) +- [Connecting with Read-Only Access](https://upstash.com/docs/redis/troubleshooting/readonly_connection.md) +- [NOAUTH Authentication Required](https://upstash.com/docs/redis/troubleshooting/no_auth.md) +- [WRONGPASS invalid or missing auth token](https://upstash.com/docs/redis/troubleshooting/http_unauthorized.md) +- [Error read ECONNRESET](https://upstash.com/docs/redis/troubleshooting/econn_reset.md) +- [ERR max concurrent connections exceeded](https://upstash.com/docs/redis/troubleshooting/max_concurrent_connections.md) +- [ERR max request size exceeded](https://upstash.com/docs/redis/troubleshooting/max_request_size_exceeded.md) +- [ERR max single record size exceeded](https://upstash.com/docs/redis/troubleshooting/max_record_size_exceeded.md) +- [ERR max key size exceeded](https://upstash.com/docs/redis/troubleshooting/max_key_size_exceeded.md) +- [ERR DB capacity quota exceeded](https://upstash.com/docs/redis/troubleshooting/db_capacity_quota_exceeded.md) +- [ERR max requests limit exceeded](https://upstash.com/docs/redis/troubleshooting/max_requests_limit.md) +- [ERR XReadGroup is cancelled](https://upstash.com/docs/redis/troubleshooting/stream_pel_limit.md) + +## Help + +- [Frequently Asked Questions](https://upstash.com/docs/redis/help/faq.md) + +## Help > Support + +- [Support & Contact Us](https://upstash.com/docs/redis/help/support.md) +- [Uptime Monitor](https://upstash.com/docs/redis/help/uptime.md) +- [Legal](https://upstash.com/docs/redis/help/legal.md) +- [Compliance](https://upstash.com/docs/redis/help/compliance.md) +- [Integration with Third Parties & Partnerships](https://upstash.com/docs/redis/help/integration.md) + +## Command Reference + +- [Redis command reference](https://upstash.com/docs/redis/commands/overview.md): Browse the Redis commands supported by Upstash, organized by category. + +## Command Reference > Array + +- [Array commands](https://upstash.com/docs/redis/commands/array/overview.md): Commands for storing values in a sparse, index-addressed array. +- [ARSET](https://upstash.com/docs/redis/commands/array/arset.md): Set contiguous array values from an index. +- [ARMSET](https://upstash.com/docs/redis/commands/array/armset.md): Set values at several array indexes. +- [ARGET](https://upstash.com/docs/redis/commands/array/arget.md): Get the value at an array index. +- [ARMGET](https://upstash.com/docs/redis/commands/array/armget.md): Get the values at several array indexes. +- [ARGETRANGE](https://upstash.com/docs/redis/commands/array/argetrange.md): Get array values in an index range. +- [ARSCAN](https://upstash.com/docs/redis/commands/array/arscan.md): Scan the populated slots of an array. +- [ARGREP](https://upstash.com/docs/redis/commands/array/argrep.md): Search array values with predicates. +- [ARDEL](https://upstash.com/docs/redis/commands/array/ardel.md): Delete values at the given array indexes. +- [ARDELRANGE](https://upstash.com/docs/redis/commands/array/ardelrange.md): Delete array values in one or more index ranges. +- [ARCOUNT](https://upstash.com/docs/redis/commands/array/arcount.md): Count the values stored in an array. +- [ARLEN](https://upstash.com/docs/redis/commands/array/arlen.md): Get the length of an array. +- [ARINSERT](https://upstash.com/docs/redis/commands/array/arinsert.md): Append values to an array. +- [ARRING](https://upstash.com/docs/redis/commands/array/arring.md): Append values to a fixed-size ring. +- [ARLASTITEMS](https://upstash.com/docs/redis/commands/array/arlastitems.md): Read the most recently written array values. +- [ARNEXT](https://upstash.com/docs/redis/commands/array/arnext.md): Get the index the next append will use. +- [ARSEEK](https://upstash.com/docs/redis/commands/array/arseek.md): Move the array append cursor. +- [AROP](https://upstash.com/docs/redis/commands/array/arop.md): Aggregate array values in an index range. +- [ARINFO](https://upstash.com/docs/redis/commands/array/arinfo.md): Inspect the internal layout of an array. + +## Command Reference > Bitmap + +- [Bitmap commands](https://upstash.com/docs/redis/commands/bitmap/overview.md): Commands for manipulating individual bits and bit fields in string values. +- [BITCOUNT](https://upstash.com/docs/redis/commands/bitmap/bitcount.md): Count set bits in a string. +- [BITFIELD](https://upstash.com/docs/redis/commands/bitmap/bitfield.md): Perform arbitrary bitfield operations. +- [BITFIELD_RO](https://upstash.com/docs/redis/commands/bitmap/bitfield-ro.md): Read bitfield values. +- [BITOP](https://upstash.com/docs/redis/commands/bitmap/bitop.md): Perform bitwise operations between strings. +- [BITPOS](https://upstash.com/docs/redis/commands/bitmap/bitpos.md): Find first bit set or clear in a string. +- [GETBIT](https://upstash.com/docs/redis/commands/bitmap/getbit.md): Get the bit value at offset. +- [SETBIT](https://upstash.com/docs/redis/commands/bitmap/setbit.md): Set or clear the bit at offset. + +## Command Reference > Connection + +- [Connection commands](https://upstash.com/docs/redis/commands/connection/overview.md): Commands for authenticating, inspecting, and managing client connections. +- [AUTH](https://upstash.com/docs/redis/commands/connection/auth.md): Authenticate to the server. +- [CLIENT GETNAME](https://upstash.com/docs/redis/commands/connection/client-getname.md): Get the current connection name. +- [CLIENT ID](https://upstash.com/docs/redis/commands/connection/client-id.md): Get the current client ID. +- [CLIENT INFO](https://upstash.com/docs/redis/commands/connection/client-info.md): Get info about current connection. +- [CLIENT LIST](https://upstash.com/docs/redis/commands/connection/client-list.md): List all client connections. +- [CLIENT SETINFO](https://upstash.com/docs/redis/commands/connection/client-setinfo.md): Set client connection attributes. +- [CLIENT SETNAME](https://upstash.com/docs/redis/commands/connection/client-setname.md): Set the connection name. +- [ECHO](https://upstash.com/docs/redis/commands/connection/echo.md): Echo the given string. +- [HELLO](https://upstash.com/docs/redis/commands/connection/hello.md): Handshake with Redis protocol. +- [PING](https://upstash.com/docs/redis/commands/connection/ping.md): Ping the server. +- [QUIT](https://upstash.com/docs/redis/commands/connection/quit.md): Close the connection. +- [RESET](https://upstash.com/docs/redis/commands/connection/reset.md): Reset the connection. +- [SELECT](https://upstash.com/docs/redis/commands/connection/select.md): Select the database by index. + +## Command Reference > Functions + +- [Functions commands](https://upstash.com/docs/redis/commands/functions/overview.md): Commands for loading, managing, and invoking Redis functions. +- [FCALL](https://upstash.com/docs/redis/commands/functions/fcall.md): Call a function. +- [FCALL_RO](https://upstash.com/docs/redis/commands/functions/fcall-ro.md): Call a read-only function. +- [FUNCTION DELETE](https://upstash.com/docs/redis/commands/functions/function-delete.md): Delete a library. +- [FUNCTION FLUSH](https://upstash.com/docs/redis/commands/functions/function-flush.md): Delete all libraries. +- [FUNCTION KILL](https://upstash.com/docs/redis/commands/functions/function-kill.md): Kill a running function. +- [FUNCTION LIST](https://upstash.com/docs/redis/commands/functions/function-list.md): List all libraries. +- [FUNCTION LOAD](https://upstash.com/docs/redis/commands/functions/function-load.md): Load a library. +- [FUNCTION STATS](https://upstash.com/docs/redis/commands/functions/function-stats.md): Get function execution stats. + +## Command Reference > Generic + +- [Generic commands](https://upstash.com/docs/redis/commands/generic/overview.md): Commands for managing keys, expiration, serialization, and database-wide key operations. +- [COPY](https://upstash.com/docs/redis/commands/generic/copy.md): Copy a key to another key. +- [DEL](https://upstash.com/docs/redis/commands/generic/del.md): Delete one or more keys. +- [DUMP](https://upstash.com/docs/redis/commands/generic/dump.md): Serialize a key's value. +- [EXISTS](https://upstash.com/docs/redis/commands/generic/exists.md): Check if keys exist. +- [EXPIRE](https://upstash.com/docs/redis/commands/generic/expire.md): Set a key's TTL in seconds. +- [EXPIREAT](https://upstash.com/docs/redis/commands/generic/expireat.md): Set expiry as Unix timestamp. +- [EXPIRETIME](https://upstash.com/docs/redis/commands/generic/expiretime.md): Get expiry as Unix timestamp. +- [KEYS](https://upstash.com/docs/redis/commands/generic/keys.md): Find keys matching a pattern. +- [MEMORY USAGE](https://upstash.com/docs/redis/commands/generic/memory-usage.md): Estimate memory used by a key. +- [PERSIST](https://upstash.com/docs/redis/commands/generic/persist.md): Remove the expiration from a key. +- [PEXPIRE](https://upstash.com/docs/redis/commands/generic/pexpire.md): Set a key's TTL in milliseconds. +- [PEXPIREAT](https://upstash.com/docs/redis/commands/generic/pexpireat.md): Set expiry as Unix ms timestamp. +- [PEXPIRETIME](https://upstash.com/docs/redis/commands/generic/pexpiretime.md): Get expiry as Unix ms timestamp. +- [PTTL](https://upstash.com/docs/redis/commands/generic/pttl.md): Get TTL in milliseconds. +- [RANDOMKEY](https://upstash.com/docs/redis/commands/generic/randomkey.md): Return a random key. +- [RENAME](https://upstash.com/docs/redis/commands/generic/rename.md): Rename a key. +- [RENAMENX](https://upstash.com/docs/redis/commands/generic/renamenx.md): Rename a key if new key doesn't exist. +- [RESTORE](https://upstash.com/docs/redis/commands/generic/restore.md): Deserialize and restore a key. +- [SCAN](https://upstash.com/docs/redis/commands/generic/scan.md): Incrementally iterate keys. +- [TOUCH](https://upstash.com/docs/redis/commands/generic/touch.md): Update last access time of keys. +- [TTL](https://upstash.com/docs/redis/commands/generic/ttl.md): Get TTL in seconds. +- [TYPE](https://upstash.com/docs/redis/commands/generic/type.md): Get the type of a key. +- [UNLINK](https://upstash.com/docs/redis/commands/generic/unlink.md): Delete keys asynchronously. +- [WAIT](https://upstash.com/docs/redis/commands/generic/wait.md): Wait for replica acknowledgements. +- [WAITAOF](https://upstash.com/docs/redis/commands/generic/waitaof.md): Wait for local and replica persistence. + +## Command Reference > Geo + +- [Geo commands](https://upstash.com/docs/redis/commands/geo/overview.md): Commands for storing and querying geospatial data. +- [GEOADD](https://upstash.com/docs/redis/commands/geo/geoadd.md): Add geospatial items. +- [GEODIST](https://upstash.com/docs/redis/commands/geo/geodist.md): Get distance between two members. +- [GEOHASH](https://upstash.com/docs/redis/commands/geo/geohash.md): Get geohash strings for members. +- [GEOPOS](https://upstash.com/docs/redis/commands/geo/geopos.md): Get coordinates of members. +- [GEORADIUS](https://upstash.com/docs/redis/commands/geo/georadius.md): Find members within a radius of a point. +- [GEORADIUS_RO](https://upstash.com/docs/redis/commands/geo/georadius-ro.md): Find members within a radius of a point. +- [GEORADIUSBYMEMBER](https://upstash.com/docs/redis/commands/geo/georadiusbymember.md): Find members within a radius of another member. +- [GEORADIUSBYMEMBER_RO](https://upstash.com/docs/redis/commands/geo/georadiusbymember-ro.md): Find members within a radius of another member. +- [GEOSEARCH](https://upstash.com/docs/redis/commands/geo/geosearch.md): Search for members in an area. +- [GEOSEARCHSTORE](https://upstash.com/docs/redis/commands/geo/geosearchstore.md): Store geosearch results. + +## Command Reference > Hash + +- [Hash commands](https://upstash.com/docs/redis/commands/hash/overview.md): Commands for storing and manipulating field-value collections. +- [HDEL](https://upstash.com/docs/redis/commands/hash/hdel.md): Delete one or more hash fields. +- [HEXISTS](https://upstash.com/docs/redis/commands/hash/hexists.md): Check if a hash field exists. +- [HEXPIRE](https://upstash.com/docs/redis/commands/hash/hexpire.md): Set field TTL in seconds. +- [HEXPIREAT](https://upstash.com/docs/redis/commands/hash/hexpireat.md): Set field expiry as timestamp. +- [HEXPIRETIME](https://upstash.com/docs/redis/commands/hash/hexpiretime.md): Get field expiry as timestamp. +- [HGET](https://upstash.com/docs/redis/commands/hash/hget.md): Get the value of a hash field. +- [HGETALL](https://upstash.com/docs/redis/commands/hash/hgetall.md): Get all fields and values. +- [HGETDEL](https://upstash.com/docs/redis/commands/hash/hgetdel.md): Get and delete hash fields. +- [HGETEX](https://upstash.com/docs/redis/commands/hash/hgetex.md): Get fields and set their expiry. +- [HINCRBY](https://upstash.com/docs/redis/commands/hash/hincrby.md): Increment integer value of a field. +- [HINCRBYFLOAT](https://upstash.com/docs/redis/commands/hash/hincrbyfloat.md): Increment float value of a field. +- [HKEYS](https://upstash.com/docs/redis/commands/hash/hkeys.md): Get all fields in a hash. +- [HLEN](https://upstash.com/docs/redis/commands/hash/hlen.md): Get number of fields in a hash. +- [HMGET](https://upstash.com/docs/redis/commands/hash/hmget.md): Get values of multiple fields. +- [HMSET](https://upstash.com/docs/redis/commands/hash/hmset.md): Set multiple hash fields. +- [HPERSIST](https://upstash.com/docs/redis/commands/hash/hpersist.md): Remove field expiration. +- [HPEXPIRE](https://upstash.com/docs/redis/commands/hash/hpexpire.md): Set field TTL in milliseconds. +- [HPEXPIREAT](https://upstash.com/docs/redis/commands/hash/hpexpireat.md): Set field expiry as ms timestamp. +- [HPEXPIRETIME](https://upstash.com/docs/redis/commands/hash/hpexpiretime.md): Get field expiry as ms timestamp. +- [HPTTL](https://upstash.com/docs/redis/commands/hash/hpttl.md): Get field TTL in milliseconds. +- [HRANDFIELD](https://upstash.com/docs/redis/commands/hash/hrandfield.md): Get random fields from a hash. +- [HSCAN](https://upstash.com/docs/redis/commands/hash/hscan.md): Incrementally iterate hash fields. +- [HSET](https://upstash.com/docs/redis/commands/hash/hset.md): Set hash field values. +- [HSETEX](https://upstash.com/docs/redis/commands/hash/hsetex.md): Set fields with expiration. +- [HSETNX](https://upstash.com/docs/redis/commands/hash/hsetnx.md): Set field only if it doesn't exist. +- [HSTRLEN](https://upstash.com/docs/redis/commands/hash/hstrlen.md): Get length of a field's value. +- [HTTL](https://upstash.com/docs/redis/commands/hash/httl.md): Get field TTL in seconds. +- [HVALS](https://upstash.com/docs/redis/commands/hash/hvals.md): Get all values in a hash. + +## Command Reference > HyperLogLog + +- [HyperLogLog commands](https://upstash.com/docs/redis/commands/hyperloglog/overview.md): Commands for probabilistic cardinality estimation. +- [PFADD](https://upstash.com/docs/redis/commands/hyperloglog/pfadd.md): Add elements to HyperLogLog. +- [PFCOUNT](https://upstash.com/docs/redis/commands/hyperloglog/pfcount.md): Get estimated cardinality. +- [PFMERGE](https://upstash.com/docs/redis/commands/hyperloglog/pfmerge.md): Merge multiple HyperLogLogs. + +## Command Reference > JSON + +- [JSON commands](https://upstash.com/docs/redis/commands/json/overview.md): Commands for storing and manipulating JSON values. +- [JSON.ARRAPPEND](https://upstash.com/docs/redis/commands/json/json-arrappend.md): Append values to JSON array. +- [JSON.ARRINDEX](https://upstash.com/docs/redis/commands/json/json-arrindex.md): Find index of value in array. +- [JSON.ARRINSERT](https://upstash.com/docs/redis/commands/json/json-arrinsert.md): Insert values into JSON array. +- [JSON.ARRLEN](https://upstash.com/docs/redis/commands/json/json-arrlen.md): Get JSON array length. +- [JSON.ARRPOP](https://upstash.com/docs/redis/commands/json/json-arrpop.md): Pop value from JSON array. +- [JSON.ARRTRIM](https://upstash.com/docs/redis/commands/json/json-arrtrim.md): Trim JSON array to range. +- [JSON.CLEAR](https://upstash.com/docs/redis/commands/json/json-clear.md): Clear JSON values. +- [JSON.DEL](https://upstash.com/docs/redis/commands/json/json-del.md): Delete JSON values. +- [JSON.DEBUG](https://upstash.com/docs/redis/commands/json/json-debug.md): Inspect JSON memory usage. +- [JSON.FORGET](https://upstash.com/docs/redis/commands/json/json-forget.md): Delete JSON values (alias of JSON.DEL). +- [JSON.GET](https://upstash.com/docs/redis/commands/json/json-get.md): Get JSON values. +- [JSON.MERGE](https://upstash.com/docs/redis/commands/json/json-merge.md): Merge JSON values. +- [JSON.MGET](https://upstash.com/docs/redis/commands/json/json-mget.md): Get values from multiple keys. +- [JSON.MSET](https://upstash.com/docs/redis/commands/json/json-mset.md): Set values in multiple keys. +- [JSON.NUMINCRBY](https://upstash.com/docs/redis/commands/json/json-numincrby.md): Increment JSON number. +- [JSON.NUMMULTBY](https://upstash.com/docs/redis/commands/json/json-nummultby.md): Multiply JSON number. +- [JSON.OBJKEYS](https://upstash.com/docs/redis/commands/json/json-objkeys.md): Get JSON object keys. +- [JSON.OBJLEN](https://upstash.com/docs/redis/commands/json/json-objlen.md): Get JSON object size. +- [JSON.RESP](https://upstash.com/docs/redis/commands/json/json-resp.md): Get JSON in RESP format. +- [JSON.SET](https://upstash.com/docs/redis/commands/json/json-set.md): Set JSON value. +- [JSON.STRAPPEND](https://upstash.com/docs/redis/commands/json/json-strappend.md): Append to JSON string. +- [JSON.STRLEN](https://upstash.com/docs/redis/commands/json/json-strlen.md): Get JSON string length. +- [JSON.TOGGLE](https://upstash.com/docs/redis/commands/json/json-toggle.md): Toggle JSON boolean. +- [JSON.TYPE](https://upstash.com/docs/redis/commands/json/json-type.md): Get JSON value type. + +## Command Reference > List + +- [List commands](https://upstash.com/docs/redis/commands/list/overview.md): Commands for storing and manipulating ordered collections. +- [BLMOVE](https://upstash.com/docs/redis/commands/list/blmove.md): Move an element between lists, blocking until one arrives. +- [BLMPOP](https://upstash.com/docs/redis/commands/list/blmpop.md): Pop from the first non-empty list, blocking until one arrives. +- [BLPOP](https://upstash.com/docs/redis/commands/list/blpop.md): Pop from the head of a list, blocking until an element arrives. +- [BRPOP](https://upstash.com/docs/redis/commands/list/brpop.md): Pop from the tail of a list, blocking until an element arrives. +- [BRPOPLPUSH](https://upstash.com/docs/redis/commands/list/brpoplpush.md): Pop from a list's tail and push it to another, blocking until an element arrives. +- [LINDEX](https://upstash.com/docs/redis/commands/list/lindex.md): Get element by index. +- [LINSERT](https://upstash.com/docs/redis/commands/list/linsert.md): Insert before or after pivot. +- [LLEN](https://upstash.com/docs/redis/commands/list/llen.md): Get list length. +- [LMOVE](https://upstash.com/docs/redis/commands/list/lmove.md): Move element between lists. +- [LMPOP](https://upstash.com/docs/redis/commands/list/lmpop.md): Pop from the first non-empty list. +- [LPOP](https://upstash.com/docs/redis/commands/list/lpop.md): Pop from list head. +- [LPOS](https://upstash.com/docs/redis/commands/list/lpos.md): Find the position of an element. +- [LPUSH](https://upstash.com/docs/redis/commands/list/lpush.md): Push to list head. +- [LPUSHX](https://upstash.com/docs/redis/commands/list/lpushx.md): Push to head if list exists. +- [LRANGE](https://upstash.com/docs/redis/commands/list/lrange.md): Get range of elements. +- [LREM](https://upstash.com/docs/redis/commands/list/lrem.md): Remove elements by value. +- [LSET](https://upstash.com/docs/redis/commands/list/lset.md): Set element at index. +- [LTRIM](https://upstash.com/docs/redis/commands/list/ltrim.md): Trim list to range. +- [RPOP](https://upstash.com/docs/redis/commands/list/rpop.md): Pop from list tail. +- [RPOPLPUSH](https://upstash.com/docs/redis/commands/list/rpoplpush.md): Pop from tail and push to head. +- [RPUSH](https://upstash.com/docs/redis/commands/list/rpush.md): Push to list tail. +- [RPUSHX](https://upstash.com/docs/redis/commands/list/rpushx.md): Push to tail if list exists. + +## Command Reference > Pub/Sub + +- [Pub/Sub commands](https://upstash.com/docs/redis/commands/pub-sub/overview.md): Commands for publishing messages and managing channel subscriptions. +- [PSUBSCRIBE](https://upstash.com/docs/redis/commands/pub-sub/psubscribe.md): Subscribe to pattern channels. +- [PUBLISH](https://upstash.com/docs/redis/commands/pub-sub/publish.md): Publish message to channel. +- [PUBSUB](https://upstash.com/docs/redis/commands/pub-sub/pubsub.md): Inspect pub/sub state. +- [PUNSUBSCRIBE](https://upstash.com/docs/redis/commands/pub-sub/punsubscribe.md): Unsubscribe from patterns. +- [SUBSCRIBE](https://upstash.com/docs/redis/commands/pub-sub/subscribe.md): Subscribe to channels. +- [UNSUBSCRIBE](https://upstash.com/docs/redis/commands/pub-sub/unsubscribe.md): Unsubscribe from channels. + +## Command Reference > Scripting + +- [Scripting commands](https://upstash.com/docs/redis/commands/scripting/overview.md): Commands for loading and executing Lua scripts. +- [EVAL](https://upstash.com/docs/redis/commands/scripting/eval.md): Execute a Lua script. +- [EVAL_RO](https://upstash.com/docs/redis/commands/scripting/eval-ro.md): Execute read-only Lua script. +- [EVALSHA](https://upstash.com/docs/redis/commands/scripting/evalsha.md): Execute cached Lua script by SHA. +- [EVALSHA_RO](https://upstash.com/docs/redis/commands/scripting/evalsha-ro.md): Run a cached script that does not write. +- [SCRIPT EXISTS](https://upstash.com/docs/redis/commands/scripting/script-exists.md): Check if scripts exist in cache. +- [SCRIPT FLUSH](https://upstash.com/docs/redis/commands/scripting/script-flush.md): Clear the script cache. +- [SCRIPT KILL](https://upstash.com/docs/redis/commands/scripting/script-kill.md): Stop a running read-only script. +- [SCRIPT LOAD](https://upstash.com/docs/redis/commands/scripting/script-load.md): Load script into cache. + +## Command Reference > Search + +- [Search commands](https://upstash.com/docs/redis/commands/search/overview.md): Commands for creating, querying, and managing Upstash Redis Search indexes. +- [SEARCH.CREATE](https://upstash.com/docs/redis/commands/search/search-create.md): Create a search index. +- [SEARCH.DROP](https://upstash.com/docs/redis/commands/search/search-drop.md): Drop a search index without deleting its keys. +- [SEARCH.DESCRIBE](https://upstash.com/docs/redis/commands/search/search-describe.md): Return metadata about a search index. +- [SEARCH.WAITINDEXING](https://upstash.com/docs/redis/commands/search/search-waitindexing.md): Wait until pending index updates are visible. +- [SEARCH.LISTINDEXES](https://upstash.com/docs/redis/commands/search/search-listindexes.md): List search indexes in the database. +- [SEARCH.QUERY](https://upstash.com/docs/redis/commands/search/search-query.md): Search documents with a JSON filter. +- [SEARCH.COUNT](https://upstash.com/docs/redis/commands/search/search-count.md): Count documents matching a query. +- [SEARCH.AGGREGATE](https://upstash.com/docs/redis/commands/search/search-aggregate.md): Compute analytics over matching documents. +- [SEARCH.ALIASADD](https://upstash.com/docs/redis/commands/search/search-aliasadd.md): Create or update a search index alias. +- [SEARCH.ALIASDEL](https://upstash.com/docs/redis/commands/search/search-aliasdel.md): Delete a search index alias. +- [SEARCH.LISTALIASES](https://upstash.com/docs/redis/commands/search/search-listaliases.md): List search index aliases. + +## Command Reference > Server + +- [Server commands](https://upstash.com/docs/redis/commands/server/overview.md): Commands for inspecting and managing the Redis server. +- [ACL CAT](https://upstash.com/docs/redis/commands/server/acl-cat.md): List command categories. +- [ACL DELUSER](https://upstash.com/docs/redis/commands/server/acl-deluser.md): Delete one or more ACL users. +- [ACL GENPASS](https://upstash.com/docs/redis/commands/server/acl-genpass.md): Generate a cryptographically strong random password. +- [ACL GENTOKEN](https://upstash.com/docs/redis/commands/server/acl-gentoken.md): Generate a REST token that can be used as a SETUSER password. +- [ACL GETUSER](https://upstash.com/docs/redis/commands/server/acl-getuser.md): Get the user's details. +- [ACL LIST](https://upstash.com/docs/redis/commands/server/acl-list.md): Show users details in config file format. +- [ACL LOAD](https://upstash.com/docs/redis/commands/server/acl-load.md): Reload ACL definitions from the primary node. +- [ACL LOG](https://upstash.com/docs/redis/commands/server/acl-log.md): Show the ACL log entries. +- [ACL RESTTOKEN](https://upstash.com/docs/redis/commands/server/acl-resttoken.md): Generate a REST token for an existing user. +- [ACL SAVE](https://upstash.com/docs/redis/commands/server/acl-save.md): Push ACL definitions to replica nodes. +- [ACL SETUSER](https://upstash.com/docs/redis/commands/server/acl-setuser.md): Create or modify a user with the specified attributes. +- [ACL USERS](https://upstash.com/docs/redis/commands/server/acl-users.md): List all the registered usernames. +- [ACL WHOAMI](https://upstash.com/docs/redis/commands/server/acl-whoami.md): Return the current connection username. +- [COMMAND](https://upstash.com/docs/redis/commands/server/command.md): Get command metadata. +- [CONFIG GET](https://upstash.com/docs/redis/commands/server/config-get.md): Read runtime configuration. +- [CONFIG SET](https://upstash.com/docs/redis/commands/server/config-set.md): Change runtime configuration. +- [DBSIZE](https://upstash.com/docs/redis/commands/server/dbsize.md): Get number of keys in database. +- [FLUSHALL](https://upstash.com/docs/redis/commands/server/flushall.md): Delete all keys in all databases. +- [FLUSHDB](https://upstash.com/docs/redis/commands/server/flushdb.md): Delete all keys in current database. +- [INFO](https://upstash.com/docs/redis/commands/server/info.md): Get server statistics and information. +- [MONITOR](https://upstash.com/docs/redis/commands/server/monitor.md): Stream all commands received. +- [TIME](https://upstash.com/docs/redis/commands/server/time.md): Get current server time. + +## Command Reference > Set + +- [Set commands](https://upstash.com/docs/redis/commands/set/overview.md): Commands for storing and manipulating unordered collections of unique members. +- [SADD](https://upstash.com/docs/redis/commands/set/sadd.md): Add members to a set. +- [SCARD](https://upstash.com/docs/redis/commands/set/scard.md): Get set cardinality. +- [SDIFF](https://upstash.com/docs/redis/commands/set/sdiff.md): Get set difference. +- [SDIFFCARD](https://upstash.com/docs/redis/commands/set/sdiffcard.md): Get set difference cardinality. +- [SDIFFSTORE](https://upstash.com/docs/redis/commands/set/sdiffstore.md): Store set difference. +- [SINTER](https://upstash.com/docs/redis/commands/set/sinter.md): Get set intersection. +- [SINTERCARD](https://upstash.com/docs/redis/commands/set/sintercard.md): Get intersection cardinality. +- [SINTERSTORE](https://upstash.com/docs/redis/commands/set/sinterstore.md): Store set intersection. +- [SISMEMBER](https://upstash.com/docs/redis/commands/set/sismember.md): Check if member exists in set. +- [SMEMBERS](https://upstash.com/docs/redis/commands/set/smembers.md): Get all set members. +- [SMISMEMBER](https://upstash.com/docs/redis/commands/set/smismember.md): Check membership of several values. +- [SMOVE](https://upstash.com/docs/redis/commands/set/smove.md): Move member between sets. +- [SPOP](https://upstash.com/docs/redis/commands/set/spop.md): Remove and return random members. +- [SRANDMEMBER](https://upstash.com/docs/redis/commands/set/srandmember.md): Get random members. +- [SREM](https://upstash.com/docs/redis/commands/set/srem.md): Remove members from a set. +- [SSCAN](https://upstash.com/docs/redis/commands/set/sscan.md): Incrementally iterate set members. +- [SUNION](https://upstash.com/docs/redis/commands/set/sunion.md): Get set union. +- [SUNIONCARD](https://upstash.com/docs/redis/commands/set/sunioncard.md): Get set union cardinality. +- [SUNIONSTORE](https://upstash.com/docs/redis/commands/set/sunionstore.md): Store set union. + +## Command Reference > Sorted Set + +- [Sorted Set commands](https://upstash.com/docs/redis/commands/sorted-set/overview.md): Commands for storing and manipulating scored collections. +- [BZMPOP](https://upstash.com/docs/redis/commands/sorted-set/bzmpop.md): Pop from the first non-empty sorted set, blocking until one arrives. +- [BZPOPMAX](https://upstash.com/docs/redis/commands/sorted-set/bzpopmax.md): Pop the highest-scoring member, blocking until one arrives. +- [BZPOPMIN](https://upstash.com/docs/redis/commands/sorted-set/bzpopmin.md): Pop the lowest-scoring member, blocking until one arrives. +- [ZADD](https://upstash.com/docs/redis/commands/sorted-set/zadd.md): Add members with scores. +- [ZCARD](https://upstash.com/docs/redis/commands/sorted-set/zcard.md): Get sorted set cardinality. +- [ZCOUNT](https://upstash.com/docs/redis/commands/sorted-set/zcount.md): Count members in score range. +- [ZDIFF](https://upstash.com/docs/redis/commands/sorted-set/zdiff.md): Get sorted set difference. +- [ZDIFFSTORE](https://upstash.com/docs/redis/commands/sorted-set/zdiffstore.md): Store sorted set difference. +- [ZINCRBY](https://upstash.com/docs/redis/commands/sorted-set/zincrby.md): Increment member's score. +- [ZINTER](https://upstash.com/docs/redis/commands/sorted-set/zinter.md): Get sorted set intersection. +- [ZINTERCARD](https://upstash.com/docs/redis/commands/sorted-set/zintercard.md): Get intersection cardinality. +- [ZINTERSTORE](https://upstash.com/docs/redis/commands/sorted-set/zinterstore.md): Store sorted set intersection. +- [ZLEXCOUNT](https://upstash.com/docs/redis/commands/sorted-set/zlexcount.md): Count members in lex range. +- [ZMPOP](https://upstash.com/docs/redis/commands/sorted-set/zmpop.md): Pop from the first non-empty sorted set. +- [ZMSCORE](https://upstash.com/docs/redis/commands/sorted-set/zmscore.md): Get scores of multiple members. +- [ZPOPMAX](https://upstash.com/docs/redis/commands/sorted-set/zpopmax.md): Pop members with highest scores. +- [ZPOPMIN](https://upstash.com/docs/redis/commands/sorted-set/zpopmin.md): Pop members with lowest scores. +- [ZRANDMEMBER](https://upstash.com/docs/redis/commands/sorted-set/zrandmember.md): Get random members. +- [ZRANGE](https://upstash.com/docs/redis/commands/sorted-set/zrange.md): Get members by index, score, or lex range. +- [ZRANGEBYLEX](https://upstash.com/docs/redis/commands/sorted-set/zrangebylex.md): Get members by lex range. +- [ZRANGEBYSCORE](https://upstash.com/docs/redis/commands/sorted-set/zrangebyscore.md): Get members by score range. +- [ZRANGESTORE](https://upstash.com/docs/redis/commands/sorted-set/zrangestore.md): Store the result of a range query. +- [ZRANK](https://upstash.com/docs/redis/commands/sorted-set/zrank.md): Get member's rank. +- [ZREM](https://upstash.com/docs/redis/commands/sorted-set/zrem.md): Remove members. +- [ZREMRANGEBYLEX](https://upstash.com/docs/redis/commands/sorted-set/zremrangebylex.md): Remove members by lex range. +- [ZREMRANGEBYRANK](https://upstash.com/docs/redis/commands/sorted-set/zremrangebyrank.md): Remove members by rank range. +- [ZREMRANGEBYSCORE](https://upstash.com/docs/redis/commands/sorted-set/zremrangebyscore.md): Remove members by score range. +- [ZREVRANGE](https://upstash.com/docs/redis/commands/sorted-set/zrevrange.md): Get members in reverse order. +- [ZREVRANGEBYLEX](https://upstash.com/docs/redis/commands/sorted-set/zrevrangebylex.md): List members in a lexicographic range, in reverse order. +- [ZREVRANGEBYSCORE](https://upstash.com/docs/redis/commands/sorted-set/zrevrangebyscore.md): List members in a score range, highest score first. +- [ZREVRANK](https://upstash.com/docs/redis/commands/sorted-set/zrevrank.md): Get member's reverse rank. +- [ZSCAN](https://upstash.com/docs/redis/commands/sorted-set/zscan.md): Incrementally iterate sorted set. +- [ZSCORE](https://upstash.com/docs/redis/commands/sorted-set/zscore.md): Get member's score. +- [ZUNION](https://upstash.com/docs/redis/commands/sorted-set/zunion.md): Get sorted set union. +- [ZUNIONSTORE](https://upstash.com/docs/redis/commands/sorted-set/zunionstore.md): Store sorted set union. + +## Command Reference > Streams + +- [Streams commands](https://upstash.com/docs/redis/commands/streams/overview.md): Commands for append-only logs, consumer groups, and message processing. +- [XACK](https://upstash.com/docs/redis/commands/streams/xack.md): Acknowledge stream messages. +- [XACKDEL](https://upstash.com/docs/redis/commands/streams/xackdel.md): Acknowledge and delete messages. +- [XADD](https://upstash.com/docs/redis/commands/streams/xadd.md): Add entry to stream. +- [XAUTOCLAIM](https://upstash.com/docs/redis/commands/streams/xautoclaim.md): Auto-claim idle messages. +- [XCLAIM](https://upstash.com/docs/redis/commands/streams/xclaim.md): Claim pending messages. +- [XDEL](https://upstash.com/docs/redis/commands/streams/xdel.md): Delete stream entries. +- [XDELEX](https://upstash.com/docs/redis/commands/streams/xdelex.md): Delete entries with reference control. +- [XGROUP](https://upstash.com/docs/redis/commands/streams/xgroup.md): Manage consumer groups. +- [XINFO CONSUMERS](https://upstash.com/docs/redis/commands/streams/xinfo-consumers.md): List group consumers. +- [XINFO GROUPS](https://upstash.com/docs/redis/commands/streams/xinfo-groups.md): List stream groups. +- [XINFO STREAM](https://upstash.com/docs/redis/commands/streams/xinfo-stream.md): Get stream info. +- [XLEN](https://upstash.com/docs/redis/commands/streams/xlen.md): Get stream length. +- [XPENDING](https://upstash.com/docs/redis/commands/streams/xpending.md): Get pending messages info. +- [XRANGE](https://upstash.com/docs/redis/commands/streams/xrange.md): Get range of stream entries. +- [XREAD](https://upstash.com/docs/redis/commands/streams/xread.md): Read stream entries. +- [XREADGROUP](https://upstash.com/docs/redis/commands/streams/xreadgroup.md): Read as consumer group. +- [XREVRANGE](https://upstash.com/docs/redis/commands/streams/xrevrange.md): Get range in reverse order. +- [XTRIM](https://upstash.com/docs/redis/commands/streams/xtrim.md): Trim stream to max length. + +## Command Reference > String + +- [String commands](https://upstash.com/docs/redis/commands/string/overview.md): Commands for storing and manipulating string values. +- [APPEND](https://upstash.com/docs/redis/commands/string/append.md): Append value to a string. +- [DECR](https://upstash.com/docs/redis/commands/string/decr.md): Decrement integer value by 1. +- [DECRBY](https://upstash.com/docs/redis/commands/string/decrby.md): Decrement integer by amount. +- [DELEX](https://upstash.com/docs/redis/commands/string/delex.md): Delete a string when a condition matches. +- [DIGEST](https://upstash.com/docs/redis/commands/string/digest.md): Get the digest of a string value. +- [GET](https://upstash.com/docs/redis/commands/string/get.md): Get string value. +- [GETDEL](https://upstash.com/docs/redis/commands/string/getdel.md): Get value and delete key. +- [GETEX](https://upstash.com/docs/redis/commands/string/getex.md): Get value and set expiration. +- [GETRANGE](https://upstash.com/docs/redis/commands/string/getrange.md): Get substring of string. +- [GETSET](https://upstash.com/docs/redis/commands/string/getset.md): Set value and return old value. +- [INCR](https://upstash.com/docs/redis/commands/string/incr.md): Increment integer value by 1. +- [INCRBY](https://upstash.com/docs/redis/commands/string/incrby.md): Increment integer by amount. +- [INCRBYFLOAT](https://upstash.com/docs/redis/commands/string/incrbyfloat.md): Increment float by amount. +- [MGET](https://upstash.com/docs/redis/commands/string/mget.md): Get values of multiple keys. +- [MSET](https://upstash.com/docs/redis/commands/string/mset.md): Set multiple keys at once. +- [MSETEX](https://upstash.com/docs/redis/commands/string/msetex.md): Set multiple keys with one expiration. +- [MSETNX](https://upstash.com/docs/redis/commands/string/msetnx.md): Set multiple keys if none exist. +- [PSETEX](https://upstash.com/docs/redis/commands/string/psetex.md): Set value with ms expiration. +- [SET](https://upstash.com/docs/redis/commands/string/set.md): Set string value. +- [SETEX](https://upstash.com/docs/redis/commands/string/setex.md): Set value with expiration. +- [SETNX](https://upstash.com/docs/redis/commands/string/setnx.md): Set value if key doesn't exist. +- [SETRANGE](https://upstash.com/docs/redis/commands/string/setrange.md): Overwrite part of string. +- [STRLEN](https://upstash.com/docs/redis/commands/string/strlen.md): Get string length. + +## Command Reference > Transactions + +- [Transactions commands](https://upstash.com/docs/redis/commands/transactions/overview.md): Commands for grouping operations into atomic transactions. +- [DISCARD](https://upstash.com/docs/redis/commands/transactions/discard.md): Discard queued commands. +- [EXEC](https://upstash.com/docs/redis/commands/transactions/exec.md): Execute queued commands. +- [MULTI](https://upstash.com/docs/redis/commands/transactions/multi.md): Start a transaction. +- [UNWATCH](https://upstash.com/docs/redis/commands/transactions/unwatch.md): Unwatch all keys. +- [WATCH](https://upstash.com/docs/redis/commands/transactions/watch.md): Watch keys for changes. + +## Command Reference > Vector + +- [Vector commands](https://upstash.com/docs/redis/commands/vector/overview.md): Commands for storing embeddings and running nearest-neighbour search inside Redis. +- [VECTOR.CREATE](https://upstash.com/docs/redis/commands/vector/vector-create.md): Create a vector index. +- [VECTOR.ADD](https://upstash.com/docs/redis/commands/vector/vector-add.md): Add or replace a vector in an index. +- [VECTOR.GET](https://upstash.com/docs/redis/commands/vector/vector-get.md): Get the vector stored under an ID. +- [VECTOR.QUERY](https://upstash.com/docs/redis/commands/vector/vector-query.md): Find the nearest vectors to a query vector. +- [VECTOR.DEL](https://upstash.com/docs/redis/commands/vector/vector-del.md): Remove a vector from an index. +- [VECTOR.COUNT](https://upstash.com/docs/redis/commands/vector/vector-count.md): Count the vectors in an index. +- [VECTOR.INFO](https://upstash.com/docs/redis/commands/vector/vector-info.md): Get the configuration of a vector index. +- [VECTOR.DROP](https://upstash.com/docs/redis/commands/vector/vector-drop.md): Delete a vector index. + +## Rate Limit > TypeScript + +- [Overview](https://upstash.com/docs/redis/sdks/ratelimit-ts/overview.md) +- [Getting Started](https://upstash.com/docs/redis/sdks/ratelimit-ts/gettingstarted.md) +- [Methods](https://upstash.com/docs/redis/sdks/ratelimit-ts/methods.md) +- [Features](https://upstash.com/docs/redis/sdks/ratelimit-ts/features.md) +- [Traffic Protection](https://upstash.com/docs/redis/sdks/ratelimit-ts/traffic-protection.md) +- [Ratelimiting Algorithms](https://upstash.com/docs/redis/sdks/ratelimit-ts/algorithms.md) +- [Costs](https://upstash.com/docs/redis/sdks/ratelimit-ts/costs.md) + +## Rate Limit > TypeScript > Integrations > Strapi + +- [Upstash Ratelimit Strapi Integration](https://upstash.com/docs/redis/integrations/ratelimit/strapi/getting-started.md) +- [Configure Upstash Ratelimit Strapi Plugin](https://upstash.com/docs/redis/integrations/ratelimit/strapi/configurations.md) + +## Rate Limit > Python + +- [Overview](https://upstash.com/docs/redis/sdks/ratelimit-py/overview.md) +- [Getting Started](https://upstash.com/docs/redis/sdks/ratelimit-py/gettingstarted.md) +- [Features](https://upstash.com/docs/redis/sdks/ratelimit-py/features.md) +- [Ratelimiting Algorithms](https://upstash.com/docs/redis/sdks/ratelimit-py/algorithms.md) diff --git a/search/index.mdx b/search/index.mdx new file mode 100644 index 000000000..fe4005670 --- /dev/null +++ b/search/index.mdx @@ -0,0 +1,32 @@ +--- +title: "Upstash Search" +sidebarTitle: "Overview" +description: "AI-powered search that combines full-text and semantic search." +--- + + +Creating new Upstash Search databases is no longer supported. For new projects, use [Upstash Vector](/vector/overall/getstarted) instead. + + +Upstash Search combines full-text and semantic search with smart ranking and zero infrastructure to manage. It is a standalone product, separate from [Upstash Redis Search](/redis/search/introduction). + +## Start here + +- [Getting Started](/search/overall/getstarted) +- [What is Upstash Search?](/search/overall/whatisupstashsearch) +- [Pricing & Limits](/search/overall/pricing) + +## Sections + +- [Quickstarts](/search/tutorials/nextjs): Next.js and docs search. +- [Search UI](/search/ui/search-bar) +- [Features](/search/features/algorithm): algorithm, indexes, content and metadata, filtering, reranking, and advanced settings. +- [SDKs](/search/sdks/ts/getting-started): TypeScript and Python. +- [Integrations](/search/integrations/docusaurus) +- [Tools](/search/tools/databasemigrator) +- [FAQ](/search/help/faq) + +## For AI agents + +- [/docs/search/llms.txt](https://upstash.com/docs/search/llms.txt) lists every Search page. +- Append `.md` to any page URL for its Markdown, for example [/docs/search/overall/getstarted.md](https://upstash.com/docs/search/overall/getstarted.md). diff --git a/search/llms.txt b/search/llms.txt new file mode 100644 index 000000000..80089a3ba --- /dev/null +++ b/search/llms.txt @@ -0,0 +1,72 @@ +# Upstash Search + +> AI-powered search that combines full-text and semantic search. + +Every Upstash Search page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Overall + +- [Upstash Search](https://upstash.com/docs/search.md): AI-powered search that combines full-text and semantic search. +- [Getting Started](https://upstash.com/docs/search/overall/getstarted.md): Creating an Upstash Search Database +- [What is Upstash Search?](https://upstash.com/docs/search/overall/whatisupstashsearch.md): Lightweight, AI-powered search for developers +- [Pricing & Limits](https://upstash.com/docs/search/overall/pricing.md) + +## Quickstarts + +- [Next.js Search Quickstart](https://upstash.com/docs/search/tutorials/nextjs.md): Getting Started With Upstash Search and Next.js +- [Docs Search Quickstart](https://upstash.com/docs/search/tutorials/buildsearchbar.md): Add Upstash Search to your website in minutes + +## Search UI + +- [SearchBar](https://upstash.com/docs/search/ui/search-bar.md): A beautifully-designed, accessible search component for React + +## Features + +- [Algorithm](https://upstash.com/docs/search/features/algorithm.md) +- [Indexes](https://upstash.com/docs/search/features/indexes.md) +- [Content and Metadata](https://upstash.com/docs/search/features/content-and-metadata.md): How to use content and metadata fields in your documents +- [Filtering](https://upstash.com/docs/search/features/filtering.md) +- [Reranking](https://upstash.com/docs/search/features/reranking.md) +- [Advanced Settings](https://upstash.com/docs/search/features/advanced-settings.md) + +## SDKs > Typescript + +- [Getting Started](https://upstash.com/docs/search/sdks/ts/getting-started.md) +- [Contributing](https://upstash.com/docs/search/sdks/ts/contributing.md) + +## SDKs > Typescript > Commands + +- [Search](https://upstash.com/docs/search/sdks/ts/commands/search.md) +- [Upsert](https://upstash.com/docs/search/sdks/ts/commands/upsert.md) +- [Fetch](https://upstash.com/docs/search/sdks/ts/commands/fetch.md) +- [Delete](https://upstash.com/docs/search/sdks/ts/commands/delete.md) +- [Range](https://upstash.com/docs/search/sdks/ts/commands/range.md) +- [Reset](https://upstash.com/docs/search/sdks/ts/commands/reset.md) +- [Info](https://upstash.com/docs/search/sdks/ts/commands/info.md) + +## SDKs > Python + +- [Getting Started](https://upstash.com/docs/search/sdks/py/gettingstarted.md) + +## SDKs > Python > Commands + +- [Search](https://upstash.com/docs/search/sdks/py/commands/search.md) +- [Upsert](https://upstash.com/docs/search/sdks/py/commands/upsert.md) +- [Fetch](https://upstash.com/docs/search/sdks/py/commands/fetch.md) +- [Delete](https://upstash.com/docs/search/sdks/py/commands/delete.md) +- [Range](https://upstash.com/docs/search/sdks/py/commands/range.md) +- [Reset](https://upstash.com/docs/search/sdks/py/commands/reset.md) +- [Info](https://upstash.com/docs/search/sdks/py/commands/info.md) + +## Integrations + +- [Docusaurus Integration](https://upstash.com/docs/search/integrations/docusaurus.md): AI-powered search component for Docusaurus using Upstash Search. + +## Tools + +- [Database Migrator](https://upstash.com/docs/search/tools/databasemigrator.md): a CLI tool to migrate your data to Upstash Search +- [Documentation Crawler](https://upstash.com/docs/search/tools/documentationcrawler.md): A tool to crawl docs and feed Upstash Search database + +## Help + +- [FAQ](https://upstash.com/docs/search/help/faq.md): Questions And Answers About Upstash Search diff --git a/vector/index.mdx b/vector/index.mdx new file mode 100644 index 000000000..6ada68143 --- /dev/null +++ b/vector/index.mdx @@ -0,0 +1,27 @@ +--- +title: "Upstash Vector" +sidebarTitle: "Overview" +description: "Serverless vector database for similarity search, RAG, and recommendations." +--- + +Upstash Vector is a serverless vector database for high-performance vector search. Use it for retrieval augmented generation (RAG), semantic search, recommendations, and classification without managing infrastructure. + +## Start here + +- [Getting Started](/vector/overall/getstarted): create an index and run your first query. +- [What is Upstash Vector?](/vector/overall/whatisvector) +- [Pricing & Limits](/vector/overall/pricing) + +## Sections + +- [Features](/vector/features/algorithm): algorithm, similarity functions, hybrid and sparse indexes, metadata, filtering, embedding models, and namespaces. +- [REST API](/vector/api/get-started) +- [SDKs](/vector/sdks/ts/getting-started): TypeScript, Python, PHP, Go, and Semantic Cache. +- [Integrations](/vector/integrations/ai-sdk): Vercel AI SDK, LangChain, LlamaIndex, and more. +- [Tutorials](/vector/tutorials/semantic_search) +- [FAQ](/vector/help/faq) + +## For AI agents + +- [/docs/vector/llms.txt](https://upstash.com/docs/vector/llms.txt) lists every Vector page. +- Append `.md` to any page URL for its Markdown, for example [/docs/vector/overall/getstarted.md](https://upstash.com/docs/vector/overall/getstarted.md). diff --git a/vector/llms.txt b/vector/llms.txt new file mode 100644 index 000000000..584b0b77e --- /dev/null +++ b/vector/llms.txt @@ -0,0 +1,135 @@ +# Upstash Vector + +> Serverless vector database for similarity search, RAG, and recommendations. + +Every Upstash Vector page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Overall + +- [Upstash Vector](https://upstash.com/docs/vector.md): Serverless vector database for similarity search, RAG, and recommendations. +- [Getting Started](https://upstash.com/docs/vector/overall/getstarted.md) +- [What is Upstash Vector?](https://upstash.com/docs/vector/overall/whatisvector.md) +- [Pricing & Limits](https://upstash.com/docs/vector/overall/pricing.md) +- [Changelog](https://upstash.com/docs/vector/overall/changelog.md) +- [llms.txt](https://upstash.com/docs/vector/overall/llms-txt.md) + +## Features + +- [Algorithm](https://upstash.com/docs/vector/features/algorithm.md) +- [Vector Similarity Functions](https://upstash.com/docs/vector/features/similarityfunctions.md) +- [Hybrid Indexes](https://upstash.com/docs/vector/features/hybridindexes.md) +- [Sparse Indexes](https://upstash.com/docs/vector/features/sparseindexes.md) +- [Metadata and Data](https://upstash.com/docs/vector/features/metadata.md) +- [Metadata Filtering](https://upstash.com/docs/vector/features/filtering.md) +- [Embedding Models](https://upstash.com/docs/vector/features/embeddingmodels.md) +- [Namespaces](https://upstash.com/docs/vector/features/namespaces.md) +- [Resumable Query](https://upstash.com/docs/vector/features/resumablequery.md) + +## REST API + +- [Getting Started](https://upstash.com/docs/vector/api/get-started.md) + +## REST API > Endpoints + +- [Upsert Vectors](https://upstash.com/docs/vector/api/endpoints/upsert.md): Upserts (inserts or updates) the vector. +- [Upsert Data](https://upstash.com/docs/vector/api/endpoints/upsert-data.md): Upserts (inserts or updates) the raw text data after embedding it. +- [Query Vectors](https://upstash.com/docs/vector/api/endpoints/query.md): Queries the approximate nearest neighbors of a vector. +- [Query Data](https://upstash.com/docs/vector/api/endpoints/query-data.md): Queries the approximate nearest neighbors of a raw text data after embedding it. +- [Fetch Vectors](https://upstash.com/docs/vector/api/endpoints/fetch.md): Fetches the vectors with the provided ids. +- [Fetch Random Vector](https://upstash.com/docs/vector/api/endpoints/fetch-random.md): Fetches a random vector. +- [Range Vectors](https://upstash.com/docs/vector/api/endpoints/range.md): Ranges over vectors starting(inclusive) from a cursor until the end of the vectors in the or given limit. +- [Delete Vectors](https://upstash.com/docs/vector/api/endpoints/delete.md): Deletes the vectors with the given ids. +- [Update Vector](https://upstash.com/docs/vector/api/endpoints/update.md): Updates a vector, data or metadata. +- [Reset Namespace(s)](https://upstash.com/docs/vector/api/endpoints/reset.md): Resets one or all namespaces of an index to its initial state by deleting all the vectors. +- [Index Info](https://upstash.com/docs/vector/api/endpoints/info.md): Returns some information about the index. +- [List Namespaces](https://upstash.com/docs/vector/api/endpoints/list-namespaces.md): Lists the names of the namespaces of an index. +- [Delete Namespace](https://upstash.com/docs/vector/api/endpoints/delete-namespace.md): Deletes a namespace of an index. +- [Rename Namespace](https://upstash.com/docs/vector/api/endpoints/rename-namespace.md): Renames a namespace of an index. + +## REST API > Endpoints > Resumable Query + +- [Start with Vector](https://upstash.com/docs/vector/api/endpoints/resumable-query/start-with-vector.md): Perform queries that can be resumed to fetch additional results. +- [Start with Data](https://upstash.com/docs/vector/api/endpoints/resumable-query/start-with-data.md): Perform queries using text data that can be resumed to fetch additional results. +- [Resume](https://upstash.com/docs/vector/api/endpoints/resumable-query/resume.md): Resumes a previously started query to fetch additional results. +- [Stop Resumable Query](https://upstash.com/docs/vector/api/endpoints/resumable-query/stop.md): Ends a resumable query and releases associated resources. + +## SDKs > Typescript + +- [Getting Started](https://upstash.com/docs/vector/sdks/ts/getting-started.md) +- [Advanced](https://upstash.com/docs/vector/sdks/ts/advanced.md) +- [Contributing](https://upstash.com/docs/vector/sdks/ts/contributing.md) + +## SDKs > Typescript > Commands + +- [Upsert](https://upstash.com/docs/vector/sdks/ts/commands/upsert.md) +- [Query](https://upstash.com/docs/vector/sdks/ts/commands/query.md) +- [Resumable Query](https://upstash.com/docs/vector/sdks/ts/commands/resumable-query.md) +- [Fetch](https://upstash.com/docs/vector/sdks/ts/commands/fetch.md) +- [Delete](https://upstash.com/docs/vector/sdks/ts/commands/delete.md) +- [Range](https://upstash.com/docs/vector/sdks/ts/commands/range.md) +- [Reset](https://upstash.com/docs/vector/sdks/ts/commands/reset.md) +- [Info](https://upstash.com/docs/vector/sdks/ts/commands/info.md) + +## SDKs > Python + +- [Getting Started](https://upstash.com/docs/vector/sdks/py/gettingstarted.md) +- [Features](https://upstash.com/docs/vector/sdks/py/features.md) + +## SDKs > Python > Example Calls + +- [Upsert](https://upstash.com/docs/vector/sdks/py/example_calls/upsert.md) +- [Query](https://upstash.com/docs/vector/sdks/py/example_calls/query.md) +- [Resumable Query](https://upstash.com/docs/vector/sdks/py/example_calls/resumable-query.md) +- [Range](https://upstash.com/docs/vector/sdks/py/example_calls/range.md) +- [Fetch](https://upstash.com/docs/vector/sdks/py/example_calls/fetch.md) +- [Delete](https://upstash.com/docs/vector/sdks/py/example_calls/delete.md) +- [Update](https://upstash.com/docs/vector/sdks/py/example_calls/update.md) +- [Reset](https://upstash.com/docs/vector/sdks/py/example_calls/reset.md) +- [Info](https://upstash.com/docs/vector/sdks/py/example_calls/info.md) + +## SDKs > PHP + +- [Getting Started](https://upstash.com/docs/vector/sdks/php/getting-started.md) +- [Getting Started with Laravel](https://upstash.com/docs/vector/sdks/php/laravel.md) + +## SDKs > PHP > Guides + +- [Upserting Vectors](https://upstash.com/docs/vector/sdks/php/commands/upsert-vectors.md) +- [Upserting Data with Embedding Models](https://upstash.com/docs/vector/sdks/php/commands/upsert-data.md) +- [Querying Vectors](https://upstash.com/docs/vector/sdks/php/commands/query.md) +- [Fetching Vectors](https://upstash.com/docs/vector/sdks/php/commands/fetch.md) +- [Deleting Vectors](https://upstash.com/docs/vector/sdks/php/commands/delete-vectors.md) +- [Reset](https://upstash.com/docs/vector/sdks/php/commands/reset.md) +- [Info](https://upstash.com/docs/vector/sdks/php/commands/info.md) + +## SDKs + +- [Semantic Cache JS](https://upstash.com/docs/vector/sdk/semantic-cache-js.md) +- [Semantic Cache Python](https://upstash.com/docs/vector/sdk/semantic-cache-py.md) +- [Go SDK](https://upstash.com/docs/vector/sdk/gosdk.md) + +## Integrations + +- [Vercel AI SDK with Upstash Vector](https://upstash.com/docs/vector/integrations/ai-sdk.md) +- [LangChain with Upstash Vector](https://upstash.com/docs/vector/integrations/langchain.md) +- [LlamaIndex with Upstash Vector](https://upstash.com/docs/vector/integrations/llamaindex.md) +- [LlamaParse with Upstash Vector](https://upstash.com/docs/vector/integrations/llamaparse.md) +- [Flowise with Upstash Vector and Redis](https://upstash.com/docs/vector/integrations/flowise.md) +- [Langflow with Upstash Vector](https://upstash.com/docs/vector/integrations/langflow.md) + +## Tutorials + +- [Simple Semantic Search](https://upstash.com/docs/vector/tutorials/semantic_search.md) +- [Implement Semantic Search with LangChain](https://upstash.com/docs/vector/tutorials/langchain.md) +- [RAG with LlamaIndex](https://upstash.com/docs/vector/tutorials/llamaindex.md) +- [Parsing and Querying Documents with LlamaParse](https://upstash.com/docs/vector/tutorials/llamaparse.md) +- [Use Hugging Face Embeddings with Upstash Vector](https://upstash.com/docs/vector/tutorials/huggingface-embeddings.md) +- [Create and Deploy RAG Applications with Gradio](https://upstash.com/docs/vector/tutorials/gradio-application.md) + +## Vector + +- [Examples](https://upstash.com/docs/vector/examples.md) + +## Help + +- [FAQ](https://upstash.com/docs/vector/help/faq.md) diff --git a/workflow/index.mdx b/workflow/index.mdx new file mode 100644 index 000000000..97b0caa12 --- /dev/null +++ b/workflow/index.mdx @@ -0,0 +1,27 @@ +--- +title: "Upstash Workflow" +sidebarTitle: "Introduction" +description: "Durable, reliable serverless functions with retries and scheduling." +--- + +Upstash Workflow lets you write durable, reliable serverless functions, with delivery guarantees, automatic retries on failure, and scheduling, without managing infrastructure. + +## Start here + +- [Overview](/workflow/getstarted): what Workflow is and where to start. +- [Quickstarts](/workflow/quickstarts/platforms): supported platforms and framework guides for TypeScript and Python. +- [How Workflow Works](/workflow/basics/how) +- [Caveats](/workflow/basics/caveats) + +## Sections + +- [Core Concepts](/workflow/basics/serve): workflow endpoints, local development, steps, the workflow client, and how-to guides. +- [Features](/workflow/features/retries): retries, parallel steps, failure functions, dead letter queue, flow control, waiting for events, webhooks, and invoke. +- [Agents](/workflow/agents/overview): build durable AI agents and agent patterns. +- [REST API](/workflow/api-reference/runs/trigger-workflow-run): runs, logs, notify, DLQ, flow control, and signing keys. +- [Resources](/workflow/integrations/openai): integrations, examples, and troubleshooting. + +## For AI agents + +- [/docs/workflow/llms.txt](https://upstash.com/docs/workflow/llms.txt) lists every Workflow page. +- Append `.md` to any page URL for its Markdown, for example [/docs/workflow/getstarted.md](https://upstash.com/docs/workflow/getstarted.md). diff --git a/workflow/llms.txt b/workflow/llms.txt new file mode 100644 index 000000000..c50ed10b4 --- /dev/null +++ b/workflow/llms.txt @@ -0,0 +1,232 @@ +# Upstash Workflow + +> Durable, reliable serverless functions with retries and scheduling. + +Every Upstash Workflow page, grouped by sidebar section. Links point to the Markdown version of each page; drop the `.md` suffix for HTML. The index of all Upstash docs is https://upstash.com/docs/llms.txt. Search them with GET https://upstash.com/docs/search?q=. + +## Getting Started + +- [Upstash Workflow](https://upstash.com/docs/workflow.md): Durable, reliable serverless functions with retries and scheduling. +- [Overview](https://upstash.com/docs/workflow/getstarted.md) +- [How Workflow Works](https://upstash.com/docs/workflow/basics/how.md) +- [Caveats](https://upstash.com/docs/workflow/basics/caveats.md) + +## Getting Started > Quickstarts + +- [Supported Platforms](https://upstash.com/docs/workflow/quickstarts/platforms.md) + +## Getting Started > Quickstarts > TypeScript + +- [Next.js](https://upstash.com/docs/workflow/quickstarts/vercel-nextjs.md) +- [Cloudflare Workers](https://upstash.com/docs/workflow/quickstarts/cloudflare-workers.md) +- [Nuxt](https://upstash.com/docs/workflow/quickstarts/nuxt.md) +- [SolidJS](https://upstash.com/docs/workflow/quickstarts/solidjs.md) +- [SvelteKit](https://upstash.com/docs/workflow/quickstarts/svelte.md) +- [Hono](https://upstash.com/docs/workflow/quickstarts/hono.md) +- [Express.js](https://upstash.com/docs/workflow/quickstarts/express.md) +- [Astro](https://upstash.com/docs/workflow/quickstarts/astro.md) +- [TanStack Start](https://upstash.com/docs/workflow/quickstarts/tanstack-start.md) + +## Getting Started > Quickstarts > Python + +- [FastAPI](https://upstash.com/docs/workflow/quickstarts/fastapi.md) +- [Next.js & FastAPI](https://upstash.com/docs/workflow/quickstarts/nextjs-fastapi.md) +- [Flask](https://upstash.com/docs/workflow/quickstarts/flask.md) +- [Next.js & Flask](https://upstash.com/docs/workflow/quickstarts/nextjs-flask.md) + +## Core Concepts > Create Workflow Endpoint + +- [Overview](https://upstash.com/docs/workflow/basics/serve.md) +- [Advanced Options](https://upstash.com/docs/workflow/basics/serve/advanced.md) + +## Core Concepts > Local Development + +- [Development Server](https://upstash.com/docs/workflow/howto/local-development/development-server.md) +- [Local Tunnel](https://upstash.com/docs/workflow/howto/local-development/local-tunnel.md) + +## Core Concepts > Steps + +- [Overview](https://upstash.com/docs/workflow/steps.md) +- [context.run](https://upstash.com/docs/workflow/steps/run.md) +- [context.sleep](https://upstash.com/docs/workflow/steps/sleep.md) +- [context.sleepUntil](https://upstash.com/docs/workflow/steps/sleepUntil.md) +- [context.call](https://upstash.com/docs/workflow/steps/call.md) +- [context.waitForEvent](https://upstash.com/docs/workflow/steps/waitForEvent.md) +- [context.createWebhook](https://upstash.com/docs/workflow/steps/createWebhook.md) +- [context.waitForWebhook](https://upstash.com/docs/workflow/steps/waitForWebhook.md) +- [context.notify](https://upstash.com/docs/workflow/steps/notify.md) +- [context.invoke](https://upstash.com/docs/workflow/steps/invoke.md) +- [context.api](https://upstash.com/docs/workflow/steps/api.md) +- [context.cancel](https://upstash.com/docs/workflow/steps/cancel.md) + +## Core Concepts > Workflow Client + +- [Overview](https://upstash.com/docs/workflow/basics/client.md) + +## Core Concepts > Workflow Client > Functions + +- [client.trigger](https://upstash.com/docs/workflow/basics/client/trigger.md) +- [client.cancel](https://upstash.com/docs/workflow/basics/client/cancel.md) +- [client.logs](https://upstash.com/docs/workflow/basics/client/logs.md) +- [client.notify](https://upstash.com/docs/workflow/basics/client/notify.md) +- [client.getWaiters](https://upstash.com/docs/workflow/basics/client/waiters.md) + +## Core Concepts > Workflow Client > Functions > client.dlq + +- [client.dlq.list](https://upstash.com/docs/workflow/basics/client/dlq/list.md) +- [client.dlq.restart](https://upstash.com/docs/workflow/basics/client/dlq/restart.md) +- [client.dlq.resume](https://upstash.com/docs/workflow/basics/client/dlq/resume.md) +- [client.dlq.delete](https://upstash.com/docs/workflow/basics/client/dlq/delete.md) +- [client.dlq.retryFailureFunction](https://upstash.com/docs/workflow/basics/client/dlq/callback.md) + +## Core Concepts > How To + +- [Start a Run](https://upstash.com/docs/workflow/howto/start.md) +- [Configure a Run](https://upstash.com/docs/workflow/howto/configure.md) +- [Cancel a Run](https://upstash.com/docs/workflow/howto/cancel.md) +- [Singleton Workflows](https://upstash.com/docs/workflow/howto/singleton.md): Make sure only one run of a workflow is in progress at a time by reusing the same workflowRunId. +- [Run a Step Now](https://upstash.com/docs/workflow/howto/retry-now.md) +- [Secure a Workflow](https://upstash.com/docs/workflow/howto/security.md) +- [Get your QStash Token](https://upstash.com/docs/workflow/howto/get-token.md) +- [Read-only Token](https://upstash.com/docs/workflow/howto/readonly-token.md) +- [Redact Private Data](https://upstash.com/docs/workflow/howto/redact-fields.md): How to redact private data in your workflow runs +- [Update a Workflow](https://upstash.com/docs/workflow/howto/changes.md) +- [Schedule a Workflow](https://upstash.com/docs/workflow/howto/schedule.md) +- [Webhooks](https://upstash.com/docs/workflow/howto/use-webhooks.md) +- [Middlewares](https://upstash.com/docs/workflow/howto/middlewares.md) +- [Migration Guide](https://upstash.com/docs/workflow/howto/migrations.md) +- [Select a Region](https://upstash.com/docs/workflow/howto/multi-region.md) + +## Core Concepts > How To > Realtime + +- [Realtime Quickstart](https://upstash.com/docs/workflow/howto/realtime/basic.md) +- [Human-in-the-Loop](https://upstash.com/docs/workflow/howto/realtime/human-in-the-loop.md) + +## Features > Retries + +- [Overview](https://upstash.com/docs/workflow/features/retries.md) +- [Prevent Retries](https://upstash.com/docs/workflow/features/retries/prevent-retries.md) + +## Features + +- [Parallel Steps](https://upstash.com/docs/workflow/features/parallel-steps.md) +- [Webhooks](https://upstash.com/docs/workflow/features/webhooks.md) + +## Features > Failure Function + +- [Overview](https://upstash.com/docs/workflow/features/failure-callback.md) +- [Reliability of Failure Function](https://upstash.com/docs/workflow/features/failureFunction/reliability.md) +- [Advanced failureUrl Option](https://upstash.com/docs/workflow/features/failureFunction/advanced.md) + +## Features > Dead Letter Queue + +- [Overview](https://upstash.com/docs/workflow/features/dlq.md) +- [Restart](https://upstash.com/docs/workflow/features/dlq/restart.md) +- [Resume](https://upstash.com/docs/workflow/features/dlq/resume.md) +- [Delete](https://upstash.com/docs/workflow/features/dlq/delete.md) +- [Rerun Failure Function](https://upstash.com/docs/workflow/features/dlq/callback.md) + +## Features > Flow Control + +- [Overview](https://upstash.com/docs/workflow/features/flow-control.md) +- [Rate and Period](https://upstash.com/docs/workflow/features/flow-control/rate-period.md) +- [Parallelism](https://upstash.com/docs/workflow/features/flow-control/parallelism.md) +- [Monitor & Manage](https://upstash.com/docs/workflow/features/flow-control/monitor.md) + +## Features > Wait For Event + +- [Overview](https://upstash.com/docs/workflow/features/wait-for-event.md) +- [Wait](https://upstash.com/docs/workflow/features/wait.md) +- [Notify](https://upstash.com/docs/workflow/features/notify.md) + +## Features > Invoke + +- [Overview](https://upstash.com/docs/workflow/features/invoke.md) +- [Using Serve Many](https://upstash.com/docs/workflow/features/invoke/serveMany.md) + +## Agents + +- [Overview](https://upstash.com/docs/workflow/agents/overview.md) +- [Getting Started](https://upstash.com/docs/workflow/agents/getting-started.md) +- [Features](https://upstash.com/docs/workflow/agents/features.md) +- [Examples](https://upstash.com/docs/workflow/agents/examples.md) + +## Agents > Patterns + +- [Prompt Chaining](https://upstash.com/docs/workflow/agents/patterns/prompt-chaining.md) +- [Evaluator-Optimizer](https://upstash.com/docs/workflow/agents/patterns/evaluator-optimizer.md) +- [Parallelization](https://upstash.com/docs/workflow/agents/patterns/parallelization.md) +- [Orchestrator-Workers](https://upstash.com/docs/workflow/agents/patterns/orchestrator-workers.md) + +## API Reference > REST API + +- [Trigger Workflow Run](https://upstash.com/docs/workflow/api-reference/runs/trigger-workflow-run.md): Start a new workflow run. +- [Batch Trigger Workflow Runs](https://upstash.com/docs/workflow/api-reference/runs/batch-trigger-workflow-runs.md): Start multiple workflow runs in a single request. +- [Cancel Workflow Run](https://upstash.com/docs/workflow/api-reference/runs/cancel-workflow-run.md): Cancel an ongoing workflow run. +- [Bulk Cancel Workflow Runs](https://upstash.com/docs/workflow/api-reference/runs/bulk-cancel-workflow-runs.md): Cancel all matching workflow runs. +- [Retry a Step Now](https://upstash.com/docs/workflow/api-reference/runs/retry-a-step-now.md): Execute a workflow step that is waiting for its next retry immediately +- [List Bulk Actions](https://upstash.com/docs/workflow/api-reference/bulk-actions/list-bulk-actions.md): List the bulk actions created by filter-based workflow run cancels +- [Get a Bulk Action](https://upstash.com/docs/workflow/api-reference/bulk-actions/get-a-bulk-action.md): Retrieve the details and progress of a bulk action +- [List Workflow Run Logs](https://upstash.com/docs/workflow/api-reference/logs/list-workflow-run-logs.md) +- [List Failed Workflow Runs](https://upstash.com/docs/workflow/api-reference/dlq/list-failed-workflow-runs.md): List and paginate through all failed workflow runs currently in the DLQ. +- [Bulk Delete Failed Workflow Runs](https://upstash.com/docs/workflow/api-reference/dlq/bulk-delete-failed-workflow-runs.md): Delete multiple failed workflow runs from the DLQ. +- [Get Failed Workflow Run](https://upstash.com/docs/workflow/api-reference/dlq/get-failed-workflow-run.md): Get details of a specific failed workflow run from the DLQ. +- [Delete Failed Workflow Run](https://upstash.com/docs/workflow/api-reference/dlq/delete-failed-workflow-run.md): Delete a specific failed workflow run from the DLQ. +- [Resume Workflow from DLQ](https://upstash.com/docs/workflow/api-reference/dlq/resume-workflow-from-dlq.md) +- [Bulk Resume Workflows from DLQ](https://upstash.com/docs/workflow/api-reference/dlq/bulk-resume-workflows-from-dlq.md): When a workflow run fails, it's automatically moved to the DLQ (Dead Letter Queue) where it can be analyzed and resumed. The resume feature allows you to continue a failed workflow run from exactly where it failed, without re-executing successfully completed steps. +- [Restart Workflow from DLQ](https://upstash.com/docs/workflow/api-reference/dlq/restart-workflow-from-dlq.md): Restart a failed workflow run from the DLQ. The workflow will start from the beginning. +- [Bulk Restart Workflows from DLQ](https://upstash.com/docs/workflow/api-reference/dlq/bulk-restart-workflows-from-dlq.md): Restart multiple failed workflow runs from the DLQ. Each workflow will start from the beginning. +- [Retry Failure Callback](https://upstash.com/docs/workflow/api-reference/dlq/retry-failure-callback.md): If the failure callback for a workflow run has failed, you can use this endpoint to manually trigger the failure callback again. This is useful for ensuring that your system is notified of workflow failures even if the original callback attempt did not succeed. +- [Cancel In-Progress Failure Callback](https://upstash.com/docs/workflow/api-reference/dlq/cancel-in-progress-failure-callback.md): Cancel an in-progress failure callback for a failed workflow. +- [List Flow Control Keys](https://upstash.com/docs/workflow/api-reference/flow-control/list-flow-control-keys.md): List all Flow Control keys +- [Get Flow Control Key](https://upstash.com/docs/workflow/api-reference/flow-control/get-flow-control-key.md): Get details of a specific Flow Control key +- [Pause Flow Control Key](https://upstash.com/docs/workflow/api-reference/flow-control/pause-flow-control-key.md): Pauses the delivery of messages associated with a specific flow-control key. +- [Resume Flow Control Key](https://upstash.com/docs/workflow/api-reference/flow-control/resume-flow-control-key.md): Resumes the delivery of messages associated with a specific flow-control key. +- [Pin Configuration for Flow Control Key](https://upstash.com/docs/workflow/api-reference/flow-control/pin-configuration-for-flow-control-key.md): Pins a processing configuration for a specific flow-control key. +- [Unpin Configuration for Flow Control Key](https://upstash.com/docs/workflow/api-reference/flow-control/unpin-configuration-for-flow-control-key.md): Removes the pinned configuration for a specific flow-control key. +- [Reset Rate for Flow Control Key](https://upstash.com/docs/workflow/api-reference/flow-control/reset-rate-for-flow-control-key.md): Resets the rate configuration state for a specific flow-control key. +- [Get Global Parallelism](https://upstash.com/docs/workflow/api-reference/flow-control/get-global-parallelism.md): Returns the current global parallelism usage across all flow control keys +- [Get Signing Keys](https://upstash.com/docs/workflow/api-reference/signing-keys/get-signing-keys.md): Retrieve your current and next signing keys +- [Rotate Signing Keys](https://upstash.com/docs/workflow/api-reference/signing-keys/rotate-signing-keys.md): Rotate your signing keys +- [Get Flow Control Key](https://upstash.com/docs/workflow/api-reference/flow-control/get-flow-control-key-1.md): Get details of a specific Flow Control key. +- [Notify Event](https://upstash.com/docs/workflow/api-reference/notify/notify-event.md): Notify an event to all waiters listening for that event ID. +- [Notify Workflow Run Event](https://upstash.com/docs/workflow/api-reference/notify/notify-workflow-run-event.md): Notify an event to a specific workflow run's waiters. +- [List Waiters](https://upstash.com/docs/workflow/api-reference/notify/list-waiters.md): List all active waiters for a specific event ID. + +## API Reference + +- [JavaScript SDK](https://upstash.com/docs/workflow/sdk/workflow-js.md) +- [Python SDK](https://upstash.com/docs/workflow/sdk/workflow-py.md) + +## Resources > Integrations + +- [OpenAI](https://upstash.com/docs/workflow/integrations/openai.md) +- [Anthropic](https://upstash.com/docs/workflow/integrations/anthropic.md) +- [Vercel AI SDK](https://upstash.com/docs/workflow/integrations/aisdk.md) +- [Resend](https://upstash.com/docs/workflow/integrations/resend.md) +- [Datadog - Upstash QStash Integration](https://upstash.com/docs/workflow/integrations/datadog.md) +- [Prometheus - Upstash QStash Integration](https://upstash.com/docs/workflow/integrations/prometheus.md) + +## Resources > Examples + +- [AI Generation](https://upstash.com/docs/workflow/examples/allInOne.md) +- [Waiting for Events](https://upstash.com/docs/workflow/examples/waitForEvent.md) +- [Customer Onboarding](https://upstash.com/docs/workflow/examples/customerOnboarding.md) +- [Auth Provider Webhook](https://upstash.com/docs/workflow/examples/authWebhook.md) +- [Payment Retries](https://upstash.com/docs/workflow/examples/paymentRetry.md) +- [E-commerce Order Fulfillment](https://upstash.com/docs/workflow/examples/eCommerceOrderFulfillment.md) +- [Image Processing](https://upstash.com/docs/workflow/examples/imageProcessing.md) +- [Custom Retry Logic](https://upstash.com/docs/workflow/examples/customRetry.md) +- [Dynamic Workflows](https://upstash.com/docs/workflow/examples/dynamicWorkflow.md) + +## Resources + +- [Pricing](https://upstash.com/docs/workflow/pricing.md) +- [Changelog](https://upstash.com/docs/workflow/changelog.md) +- [Roadmap](https://upstash.com/docs/workflow/roadmap.md) +- [llms.txt](https://upstash.com/docs/workflow/llms-txt.md) + +## Resources > Troubleshooting + +- [General](https://upstash.com/docs/workflow/troubleshooting/general.md) +- [Vercel](https://upstash.com/docs/workflow/troubleshooting/vercel.md)