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 ccb36d255..67c1043b8 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..200f7aeeb --- /dev/null +++ b/blob/index.mdx @@ -0,0 +1,25 @@ +--- +title: "Upstash Blob" +sidebarTitle: "Overview" +description: "S3-compatible object storage with TypeScript, Python, and Go SDKs and direct browser uploads." +--- + +Upstash Blob is S3-compatible object storage. The TypeScript, Python, and Go SDKs each have a `Bucket` client and an upload handler for your server, and `@upstash/blob` has 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. +- SDKs: [TypeScript](/blob/sdks/ts/overview), [Python](/blob/sdks/py/overview), and [Go](/blob/sdks/go/overview) references. +- [Recipes](/blob/recipes/overview): profile pictures, product images, site assets, AI images, attachments, video, private documents, exports, and FastAPI with React. +- [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..d431c7594 --- /dev/null +++ b/blob/llms.txt @@ -0,0 +1,69 @@ +# Upstash Blob + +> S3-compatible object storage with TypeScript, Python, and Go SDKs 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/api/search?q=. + +## Get Started + +- [Upstash Blob 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 the bucket token, on any platform, and reach storage 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, a list 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. + +## Uploads + +- [Upload Handler](https://upstash.com/docs/blob/uploads/upload-handler.md): Mount the upload route, authorize the upload before anything is signed, and record the file once it lands. +- [Constraints](https://upstash.com/docs/blob/uploads/constraints.md): Max size, content types and byte sniffing, enforced on your server before anything is signed. +- [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. + +## Browser Client + +- [Upload Client](https://upstash.com/docs/blob/uploads/upload-client.md): useUpload, useServerUpload and uploadHooks, for uploading from the browser straight to storage. +- [Large Files](https://upstash.com/docs/blob/uploads/large-files.md): Multipart uploads from the browser, with progress, pause, resume, retries and cancel. + +## SDKs > TypeScript + +- [TypeScript SDK](https://upstash.com/docs/blob/sdks/ts/overview.md): Install @upstash/blob, pick an entrypoint, and build a Bucket client on Node, Workers or any fetch runtime. +- [Bucket API](https://upstash.com/docs/blob/sdks/ts/bucket.md): Every Bucket method in @upstash/blob: put, get, info, list, copy, move, del, signed URLs and multipart cleanup. +- [Upload Handler](https://upstash.com/docs/blob/sdks/ts/upload-handler.md): uploadHandler in TypeScript: options, callback arguments, uploadRoute(), and mounting it in Next.js, Hono, SvelteKit, Remix and Workers. +- [Errors](https://upstash.com/docs/blob/sdks/ts/errors.md): BlobError in TypeScript: BlobError.is(), the fields it carries, and throwing one from an upload handler. + +## SDKs > Python + +- [Python SDK](https://upstash.com/docs/blob/sdks/py/overview.md): Install upstash-blob, pick Bucket or AsyncBucket, and build a client for your server. +- [Bucket API](https://upstash.com/docs/blob/sdks/py/bucket.md): Every Bucket method in upstash-blob: put, get, stream, info, list, copy, move, delete, signed URLs and multipart cleanup. +- [Upload Handler](https://upstash.com/docs/blob/sdks/py/upload-handler.md): UploadHandler and AsyncUploadHandler in Python: options, callback arguments, UploadRoute, and mounting on FastAPI, Django and Flask. +- [Errors](https://upstash.com/docs/blob/sdks/py/errors.md): BlobError in Python: the fields it carries, to_dict(), raising one from an upload handler, and what raises something else. + +## SDKs > Go + +- [Go SDK](https://upstash.com/docs/blob/sdks/go/overview.md): Install blob-go, build a Bucket client, and configure retries, telemetry and an S3 client. +- [Bucket API](https://upstash.com/docs/blob/sdks/go/bucket.md): Every Bucket method in blob-go: Put, Get, Info, List, Copy, Move, Delete, signed URLs and multipart cleanup. +- [Upload Handler](https://upstash.com/docs/blob/sdks/go/upload-handler.md): NewUploadHandler in Go: options, callback arguments, UploadRoute, and mounting it on net/http. +- [Errors](https://upstash.com/docs/blob/sdks/go/errors.md): *blob.Error in Go: matching codes with errors.As, errors.Is and HasCode, its fields, its JSON, and what is returned as a plain error. + +## Recipes + +- [Blob 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. +- [FastAPI + React Uploads](https://upstash.com/docs/blob/recipes/fastapi-react.md): A FastAPI backend serving useUpload from @upstash/blob/react: direct browser uploads, one row per file, signed in users only. + +## 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..f698b51ee --- /dev/null +++ b/box/llms.txt @@ -0,0 +1,81 @@ +# 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/api/search?q=. + +## Introduction + +- [Upstash Box Quickstart](https://upstash.com/docs/box/overall/quickstart.md) +- [Box Basics](https://upstash.com/docs/box/overall/how-it-works.md) +- [Upstash Box 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) +- [Upstash Box 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 Hermes Agent in a Cloud Sandbox and Connect from Hermes Desktop](https://upstash.com/docs/box/guides/hermes-setup.md): Host the Hermes agent by Nous Research in a keep-alive Upstash Box and use it from Hermes Desktop on your machine over SSH. +- [Run Hermes Agent's Terminal in Upstash Box](https://upstash.com/docs/box/guides/hermes-plugin-setup.md): Use the Upstash Box plugin for Hermes Agent to run its terminal, code execution and file tools in a box, while Hermes itself stays on your machine. +- [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 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. +- [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. +- [Run Box Agents on Neon AI Gateway Models](https://upstash.com/docs/box/guides/neon-ai-gateway.md): Run Claude Code, Codex, and OpenCode in Upstash Box on Neon AI Gateway models, with one Neon credential and Neon prepaid credits. +- [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. +- [Run Your Test Suite in a Cloud Sandbox with Crabbox](https://upstash.com/docs/box/guides/crabbox-setup.md): Use the Crabbox CLI to run your test suite in a clean Upstash Box from your local machine. +- [Run Orca Workspaces in Upstash Box](https://upstash.com/docs/box/guides/orca-setup.md): Use the Upstash Box plugin for Orca to run each workspace and its coding agents in its own box, reached over SSH. diff --git a/llms-full.txt b/llms-full.txt index 1e01b0383..55ea1eb0a 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -6,7 +6,7 @@ ## Search -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. +Search these docs: GET https://upstash.com/docs/api/search?q= returns JSON { results: [{ href, title, heading, snippet, tab }] }. Append .md to any page href for its markdown. # README Source: https://upstash.com/docs/README @@ -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 @@ -3547,6 +3547,29 @@ 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. The TypeScript, Python, and Go SDKs each have a `Bucket` client and an upload handler for your server, and `@upstash/blob` has 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. +* SDKs: [TypeScript](/docs/blob/sdks/ts/overview), [Python](/docs/blob/sdks/py/overview), and [Go](/docs/blob/sdks/go/overview) references. +* [Recipes](/docs/blob/recipes/overview): profile pictures, product images, site assets, AI images, attachments, video, private documents, exports, and FastAPI with React. +* [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 @@ -13857,6 +13880,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 @@ -25896,6 +25944,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 @@ -29951,6 +30024,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). + # Upstash Realtime Pricing Source: https://upstash.com/docs/realtime/overall/pricing @@ -90509,6 +90603,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 @@ -108561,6 +108686,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 @@ -116004,6 +116159,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 @@ -127225,6 +127405,32 @@ 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): the core concepts and a first workflow. +* [Quickstarts](/docs/workflow/quickstarts/platforms): supported platforms and framework guides for TypeScript and Python. +* [How Workflow Works](/docs/workflow/basics/how) +* [Best Practices](/docs/workflow/basics/best-practices/overview) +* [Pricing](/docs/workflow/pricing) + +## 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 371e9535e..93c77ac74 100644 --- a/llms.txt +++ b/llms.txt @@ -8,7 +8,20 @@ ## Search -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. +Search these docs: GET https://upstash.com/docs/api/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 TypeScript, Python, and Go SDKs 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 @@ -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, a list 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 TypeScript, Python, and Go SDKs 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. - [Upstash Blob 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. @@ -98,6 +112,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 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) @@ -289,6 +304,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) - [Call OpenAI and Other LLM APIs with QStash](https://upstash.com/docs/qstash/integrations/llm.md) @@ -347,6 +363,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) - [Upstash Realtime Serverless 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. - [Upstash Realtime Pricing](https://upstash.com/docs/realtime/overall/pricing.md) - [Upstash Realtime 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. @@ -717,6 +734,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) @@ -1304,6 +1322,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) - [Upstash Search 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. - [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) @@ -1360,6 +1379,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) - [Upstash Vector 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) @@ -1527,6 +1547,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 Workflow & 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..ad15567f3 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"; @@ -64,7 +64,7 @@ const PREAMBLE = ` */ const SEARCH_SECTION = `## Search -Search these docs: GET ${SITE_URL}/search?q= returns JSON { results: [{ href, title, heading, snippet, tab }] }. Append .md to any page href for its markdown.`; +Search these docs: GET ${SITE_URL}/api/search?q= returns JSON { results: [{ href, title, heading, snippet, tab }] }. Append .md to any page href for its markdown.`; interface Entry { title: string; @@ -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}/api/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..86c2073bc --- /dev/null +++ b/qstash/llms.txt @@ -0,0 +1,164 @@ +# 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/api/search?q=. + +## Overall + +- [QStash Getting Started](https://upstash.com/docs/qstash/overall/getstarted.md) +- [QStash Use Cases](https://upstash.com/docs/qstash/overall/usecases.md) +- [Pricing & Limits](https://upstash.com/docs/qstash/overall/pricing.md) +- [QStash Prod Pack & Enterprise](https://upstash.com/docs/qstash/overall/enterprise.md) +- [API Examples](https://upstash.com/docs/qstash/overall/apiexamples.md) +- [Compare QStash to Alternatives](https://upstash.com/docs/qstash/overall/compare.md): How QStash compares to BullMQ, Kafka, Amazon SQS, Amazon SNS, and Google Pub/Sub. +- [QStash 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 + +- [QStash with Next.js](https://upstash.com/docs/qstash/quickstarts/vercel-nextjs.md) +- [QStash with Python on Vercel](https://upstash.com/docs/qstash/quickstarts/python-vercel.md) +- [QStash with Cloudflare Workers](https://upstash.com/docs/qstash/quickstarts/cloudflare-workers.md) +- [QStash with AWS Lambda (Node.js)](https://upstash.com/docs/qstash/quickstarts/aws-lambda/nodejs.md) +- [QStash with AWS Lambda (Python)](https://upstash.com/docs/qstash/quickstarts/aws-lambda/python.md) +- [QStash with Deno Deploy](https://upstash.com/docs/qstash/quickstarts/deno-deploy.md) +- [QStash with Go on Fly.io](https://upstash.com/docs/qstash/quickstarts/fly-io/go.md) + +## Features + +- [Background Jobs with QStash](https://upstash.com/docs/qstash/features/background-jobs.md) +- [Retry](https://upstash.com/docs/qstash/features/retry.md) +- [QStash Schedules](https://upstash.com/docs/qstash/features/schedules.md) +- [QStash Queues](https://upstash.com/docs/qstash/features/queues.md) +- [QStash Flow Control](https://upstash.com/docs/qstash/features/flowcontrol.md) +- [QStash Delay](https://upstash.com/docs/qstash/features/delay.md) +- [QStash 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) +- [QStash Dead Letter Queue (DLQ)](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) +- [QStash Security](https://upstash.com/docs/qstash/features/security.md) + +## Integrations + +- [Call OpenAI and Other LLM APIs with QStash](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 QStash Region](https://upstash.com/docs/qstash/howto/multi-region.md) +- [QStash Local Development](https://upstash.com/docs/qstash/howto/local-development.md) +- [Local Tunnel for QStash Development](https://upstash.com/docs/qstash/howto/local-tunnel.md): Expose your local server with localtunnel or ngrok so QStash can deliver messages and webhooks to localhost during development. +- [QStash Read-only Token](https://upstash.com/docs/qstash/howto/readonly-token.md) +- [Redact Private Data in QStash](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 + +- [QStash TypeScript SDK Overview](https://upstash.com/docs/qstash/sdks/ts/overview.md) +- [QStash TypeScript SDK 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 in the background with @upstash/mcp-toolkit, durably on QStash. +- [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 + +- [QStash TypeScript SDK 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 + +- [QStash Python SDK Overview](https://upstash.com/docs/qstash/sdks/py/overview.md) +- [QStash Python SDK Getting Started](https://upstash.com/docs/qstash/sdks/py/gettingstarted.md) + +## SDKs > Python > Examples + +- [QStash Python SDK 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..467a35366 --- /dev/null +++ b/realtime/llms.txt @@ -0,0 +1,16 @@ +# 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/api/search?q=. + +## Realtime + +- [Upstash Realtime 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) +- [Upstash Realtime Serverless Deployment](https://upstash.com/docs/realtime/features/serverless.md) +- [Upstash Realtime 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..54646a25c --- /dev/null +++ b/redis/llms.txt @@ -0,0 +1,1190 @@ +# 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/api/search?q=. + +## Overall + +- [Upstash Redis 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) +- [Upstash Redis Changelog](https://upstash.com/docs/redis/overall/changelog.md) +- [Upstash Redis Use Cases](https://upstash.com/docs/redis/overall/usecases.md) +- [Compare Upstash Redis to Alternatives](https://upstash.com/docs/redis/overall/compare.md): How Upstash Redis compares to AWS ElastiCache, AWS MemoryDB, Redis Labs, AWS DynamoDB and FaunaDB, and what makes Upstash different. +- [Upstash Redis Prod Pack & Enterprise](https://upstash.com/docs/redis/overall/enterprise.md) +- [llms.txt](https://upstash.com/docs/redis/overall/llms-txt.md) + +## Quickstarts + +- [Upstash Redis with AWS Lambda (TypeScript)](https://upstash.com/docs/redis/quickstarts/aws-lambda.md): Deploy a TypeScript AWS Lambda function with the AWS CDK that uses Upstash Redis through @upstash/redis to keep a counter. +- [Upstash Redis with SST](https://upstash.com/docs/redis/quickstarts/sst.md): Deploy an SST app on AWS that connects to Upstash Redis with @upstash/redis and keeps a counter. +- [Upstash Redis with Laravel](https://upstash.com/docs/redis/quickstarts/laravel.md): Use Upstash Redis in a Laravel app with Predis or PhpRedis, including the Redis facade and Laravel's cache, session and queue drivers. +- [Upstash Redis with Azure Functions](https://upstash.com/docs/redis/quickstarts/azure-functions.md): Create a TypeScript Azure Functions app that uses Upstash Redis with @upstash/redis, set up resources with the Azure CLI, and deploy with Azure Functions Core Tools. +- [Upstash Redis with Google Cloud Run functions](https://upstash.com/docs/redis/quickstarts/google-cloud-functions.md): Deploy a Google Cloud Run function that connects to Upstash Redis with @upstash/redis and increments a counter on every request. +- [Upstash Redis with Elixir](https://upstash.com/docs/redis/quickstarts/elixir.md): Tutorial on Using Upstash Redis In Your Phoenix App and Deploying it on Fly. +- [Upstash Redis with Express (Node.js)](https://upstash.com/docs/redis/quickstarts/express.md): Add a Redis cache to an Express app with ioredis, run it locally, then deploy it to any host (Render, Railway, Fly.io, DigitalOcean, a VPS or Docker) by setting REDIS_URL. +- [Upstash Redis with Render](https://upstash.com/docs/redis/quickstarts/render.md): Connect a Render Web Service, Background Worker or Cron Job to Upstash Redis with any standard Redis client by setting REDIS_URL. +- [Upstash Redis with Fly.io](https://upstash.com/docs/redis/quickstarts/fly.md): Connect an app running on Fly.io to Upstash Redis, either through Fly's native Upstash integration or a standard Upstash database. +- [Upstash Redis with Netlify](https://upstash.com/docs/redis/quickstarts/netlify.md): Use Upstash Redis from Netlify Functions and Netlify Edge Functions with the HTTP-based @upstash/redis SDK and environment variables set in Netlify. +- [Upstash Redis with Cloudflare Workers](https://upstash.com/docs/redis/quickstarts/cloudflareworkers.md): Create a Cloudflare Workers app with C3 that connects to Upstash Redis over HTTP with @upstash/redis, then deploy it to Cloudflare. +- [Upstash Redis with Fastly Compute](https://upstash.com/docs/redis/quickstarts/fastlycompute.md): Connect a Fastly Compute app to a global Upstash Redis database with @upstash/redis to serve data from the edge. +- [Upstash Redis with DigitalOcean](https://upstash.com/docs/redis/quickstarts/digitalocean.md): Connect DigitalOcean App Platform apps and Droplets to a standard Upstash Redis database with REDIS_URL, and migrate from the deprecated Marketplace add-on (shut down August 31, 2026). +- [Upstash Redis with Supabase Edge Functions](https://upstash.com/docs/redis/quickstarts/supabase.md): Use Upstash Redis from Supabase Edge Functions to keep a hash of function invocation counts per region. +- [Upstash Redis with Deno Deploy](https://upstash.com/docs/redis/quickstarts/deno-deploy.md): Build a view counter on Deno Deploy that stores its count in Upstash Redis using @upstash/redis. +- [Upstash Redis with Koyeb](https://upstash.com/docs/redis/quickstarts/koyeb.md): Connect a Node.js Express app on Koyeb to Upstash Redis with @upstash/redis, then deploy it from a Git repository or a Docker container. + +## Quickstarts > Vercel Functions + +- [Upstash Redis with Vercel Functions (App Router)](https://upstash.com/docs/redis/quickstarts/vercel-functions-app-router.md): Connect Vercel Functions in a Next.js App Router project to Upstash Redis with @upstash/redis, then deploy the counter example to Vercel. +- [Upstash Redis with Vercel Functions (Pages Router)](https://upstash.com/docs/redis/quickstarts/vercel-functions-pages-router.md): Connect Vercel Functions in a Next.js Pages Router project to Upstash Redis with @upstash/redis, then deploy the counter example to Vercel. + +## Quickstarts > Next.js 16 + +- [Upstash Redis with Next.js (App Router)](https://upstash.com/docs/redis/quickstarts/nextjs-app-router.md): Use Upstash Redis in a Next.js App Router project with @upstash/redis: add your credentials, create a client, and build a simple counter. +- [Upstash Redis with Next.js (Pages Router)](https://upstash.com/docs/redis/quickstarts/nextjs-pages-router.md): Use Upstash Redis in a Next.js Pages Router project with @upstash/redis: create a database, connect over HTTP, and build a simple counter. + +## Quickstarts > Python + +- [Upstash Redis with FastAPI](https://upstash.com/docs/redis/quickstarts/fastapi.md): Build a FastAPI app that uses Upstash Redis through upstash-redis to count requests. +- [Upstash Redis with Flask](https://upstash.com/docs/redis/quickstarts/flask.md): Build a Flask app that uses Upstash Redis through upstash-redis to count homepage visits. +- [Upstash Redis with Django](https://upstash.com/docs/redis/quickstarts/django.md): Build a Django app that uses Upstash Redis through upstash-redis to count homepage visits. +- [Upstash Redis with AWS Lambda (Python)](https://upstash.com/docs/redis/quickstarts/python-aws-lambda.md): Deploy a Python AWS Lambda function with the AWS CDK that uses Upstash Redis through upstash-redis to keep a counter. +- [Upstash Redis with the Vercel Python Runtime](https://upstash.com/docs/redis/quickstarts/vercel-python-runtime.md): Use Upstash Redis from the Vercel Python runtime with upstash-redis, using a Django counter app that you can adapt to Flask or FastAPI. + +## How To + +- [Connect Any Redis Client to Upstash Redis](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) +- [Upstash Redis 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 + +- [Redis TypeScript SDK Overview](https://upstash.com/docs/redis/sdks/ts/overview.md) +- [Redis TypeScript SDK Getting Started](https://upstash.com/docs/redis/sdks/ts/getstarted.md): Install @upstash/redis, connect to your Upstash Redis database over HTTP, and run your first commands from TypeScript or JavaScript. +- [Redis TypeScript SDK Deployment](https://upstash.com/docs/redis/sdks/ts/deployment.md) +- [Redis TypeScript SDK Advanced Usage](https://upstash.com/docs/redis/sdks/ts/advanced.md) +- [Redis TypeScript SDK Retries](https://upstash.com/docs/redis/sdks/ts/retries.md) +- [Redis TypeScript SDK 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 + +- [Redis TypeScript SDK 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 + +- [Redis Python SDK Overview](https://upstash.com/docs/redis/sdks/py/overview.md) +- [Redis Python SDK Getting Started](https://upstash.com/docs/redis/sdks/py/gettingstarted.md): Install upstash-redis, connect to your Upstash Redis database over HTTP, and run your first commands from Python, sync or async. +- [Redis Python SDK Features](https://upstash.com/docs/redis/sdks/py/features.md) + +## SDKs > Python > Commands + +- [Redis Python SDK 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, session index and session log, stored provider keys, 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): Long-running tools for MCP servers: start in memory with no setup, then make tasks durable with Upstash Redis and QStash or Workflow. Clients that support MCP Tasks poll natively, and every other client gets a task id the model can poll. +- [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 + +- [Upstash Redis Global Database](https://upstash.com/docs/redis/features/globaldatabase.md): Upstash Redis Global Database replicates your data to read regions around the world and routes each client to the nearest one for low-latency reads. +- [Upstash Redis 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) +- [Upstash Redis 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 + +- [Redis Search Introduction](https://upstash.com/docs/redis/search/introduction.md) +- [Redis Search 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) +- [Redis Search Queries](https://upstash.com/docs/redis/search/querying.md) +- [Hybrid Search](https://upstash.com/docs/redis/search/hybrid-search.md): Combine full-text and semantic search with HYBRID fields and retrievers. +- [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. +- [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 + +- [Redis Search Boolean Operators](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 + +- [Redis Search Field Operators](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 > Retrievers + +- [Overview](https://upstash.com/docs/redis/search/retrievers/overview.md): Retrievers run one or more queries and return the top documents. +- [$rrf](https://upstash.com/docs/redis/search/retrievers/rrf.md): Merge the results of several retrievers with Reciprocal Rank Fusion. +- [$ann](https://upstash.com/docs/redis/search/retrievers/ann.md): Find the documents whose HYBRID field is closest in meaning to a text. +- [$standard](https://upstash.com/docs/redis/search/retrievers/standard.md): Run one query, and set its weight inside $rrf. + +## Search > Aggregation Operators > Metric Aggregations + +- [Redis Search Metric Aggregations](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 + +- [Redis Search Bucket Aggregations](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 + +- [Redis 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 Upstash Redis](https://upstash.com/docs/redis/tutorials/express_session.md): Store Express sessions in Upstash Redis with express-session, connect-redis and node-redis, so sessions survive restarts and work across multiple servers. +- [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 + +- [Upstash Redis FAQ](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/common/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 + +- [Redis 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 + +- [Ratelimit TypeScript SDK Overview](https://upstash.com/docs/redis/sdks/ratelimit-ts/overview.md) +- [Ratelimit TypeScript SDK Getting Started](https://upstash.com/docs/redis/sdks/ratelimit-ts/gettingstarted.md) +- [Methods](https://upstash.com/docs/redis/sdks/ratelimit-ts/methods.md) +- [Ratelimit TypeScript SDK Features](https://upstash.com/docs/redis/sdks/ratelimit-ts/features.md) +- [Traffic Protection](https://upstash.com/docs/redis/sdks/ratelimit-ts/traffic-protection.md) +- [Ratelimit TypeScript SDK 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 + +- [Ratelimit Python SDK Overview](https://upstash.com/docs/redis/sdks/ratelimit-py/overview.md) +- [Ratelimit Python SDK Getting Started](https://upstash.com/docs/redis/sdks/ratelimit-py/gettingstarted.md) +- [Ratelimit Python SDK Features](https://upstash.com/docs/redis/sdks/ratelimit-py/features.md) +- [Ratelimit Python SDK 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..ea1638c1c --- /dev/null +++ b/search/llms.txt @@ -0,0 +1,71 @@ +# 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/api/search?q=. + +## Overall + +- [Upstash 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 + +- [Search TypeScript SDK 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 + +- [Search Python SDK 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 + +- [Upstash Search 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..4ee6eb47e --- /dev/null +++ b/vector/llms.txt @@ -0,0 +1,134 @@ +# 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/api/search?q=. + +## Overall + +- [Upstash Vector 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) +- [Upstash Vector 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 + +- [Vector 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 + +- [Vector TypeScript SDK Getting Started](https://upstash.com/docs/vector/sdks/ts/getting-started.md) +- [Vector TypeScript SDK Advanced Usage](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 + +- [Vector Python SDK Getting Started](https://upstash.com/docs/vector/sdks/py/gettingstarted.md) +- [Vector Python SDK 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 + +- [Vector PHP SDK 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 + +- [Upstash Vector Examples](https://upstash.com/docs/vector/examples.md) + +## Help + +- [Upstash Vector 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..77f0c5ee8 --- /dev/null +++ b/workflow/index.mdx @@ -0,0 +1,28 @@ +--- +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): the core concepts and a first workflow. +- [Quickstarts](/workflow/quickstarts/platforms): supported platforms and framework guides for TypeScript and Python. +- [How Workflow Works](/workflow/basics/how) +- [Best Practices](/workflow/basics/best-practices/overview) +- [Pricing](/workflow/pricing) + +## 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..243558f01 --- /dev/null +++ b/workflow/llms.txt @@ -0,0 +1,242 @@ +# 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/api/search?q=. + +## Getting Started + +- [Workflow Overview](https://upstash.com/docs/workflow/getstarted.md) +- [How Workflow Works](https://upstash.com/docs/workflow/basics/how.md) + +## Getting Started > Quickstarts + +- [Upstash Workflow Supported Platforms](https://upstash.com/docs/workflow/quickstarts/platforms.md) + +## Getting Started > Quickstarts > TypeScript + +- [Upstash Workflow with Next.js](https://upstash.com/docs/workflow/quickstarts/vercel-nextjs.md) +- [Upstash Workflow with Cloudflare Workers](https://upstash.com/docs/workflow/quickstarts/cloudflare-workers.md) +- [Upstash Workflow with Nuxt](https://upstash.com/docs/workflow/quickstarts/nuxt.md) +- [Upstash Workflow with SolidJS](https://upstash.com/docs/workflow/quickstarts/solidjs.md) +- [Upstash Workflow with SvelteKit](https://upstash.com/docs/workflow/quickstarts/svelte.md) +- [Upstash Workflow with Hono](https://upstash.com/docs/workflow/quickstarts/hono.md) +- [Upstash Workflow with Express.js](https://upstash.com/docs/workflow/quickstarts/express.md) +- [Upstash Workflow with Astro](https://upstash.com/docs/workflow/quickstarts/astro.md) +- [Upstash Workflow with TanStack Start](https://upstash.com/docs/workflow/quickstarts/tanstack-start.md) + +## Getting Started > Quickstarts > Python + +- [Upstash Workflow with FastAPI](https://upstash.com/docs/workflow/quickstarts/fastapi.md) +- [Upstash Workflow with Next.js and FastAPI](https://upstash.com/docs/workflow/quickstarts/nextjs-fastapi.md) +- [Upstash Workflow with Flask](https://upstash.com/docs/workflow/quickstarts/flask.md) +- [Upstash Workflow with Next.js and Flask](https://upstash.com/docs/workflow/quickstarts/nextjs-flask.md) + +## Getting Started > Best Practices + +- [Best practices](https://upstash.com/docs/workflow/basics/best-practices/overview.md) +- [Execute Business Logic in context.run](https://upstash.com/docs/workflow/basics/best-practices/business-logic-in-steps.md) +- [Return Results from context.run](https://upstash.com/docs/workflow/basics/best-practices/return-step-results.md) +- [Avoid Non-deterministic Code Outside context.run](https://upstash.com/docs/workflow/basics/best-practices/deterministic-code.md) +- [Ensure Idempotency in context.run](https://upstash.com/docs/workflow/basics/best-practices/idempotency.md) +- [Don't Nest Context Methods](https://upstash.com/docs/workflow/basics/best-practices/nested-context-methods.md) +- [Include At Least One Step in Workflow](https://upstash.com/docs/workflow/basics/best-practices/at-least-one-step.md) +- [Avoid Context and Step Limits](https://upstash.com/docs/workflow/basics/best-practices/workflow-limits.md) +- [Avoid Promise.any](https://upstash.com/docs/workflow/basics/best-practices/promise-any.md) + +## Core Concepts > Create Workflow Endpoint + +- [Workflow Serve 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 for Upstash Workflow Development](https://upstash.com/docs/workflow/howto/local-development/local-tunnel.md) + +## Core Concepts > Steps + +- [Workflow 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 + +- [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) +- [Upstash Workflow Read-only Token](https://upstash.com/docs/workflow/howto/readonly-token.md) +- [Redact Private Data in Upstash Workflow](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 an Upstash Workflow 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 + +- [Workflow 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 + +- [Workflow Failure Callback 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 + +- [Workflow DLQ 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 + +- [Workflow 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 + +- [Workflow 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 + +- [Workflow Invoke Overview](https://upstash.com/docs/workflow/features/invoke.md) +- [Using Serve Many](https://upstash.com/docs/workflow/features/invoke/serveMany.md) + +## Agents + +- [Workflow Agents Overview](https://upstash.com/docs/workflow/agents/overview.md) +- [Workflow Agents Getting Started](https://upstash.com/docs/workflow/agents/getting-started.md) +- [Workflow Agents Features](https://upstash.com/docs/workflow/agents/features.md) +- [Workflow Agents 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 and filter workflow runs with their state, completed and in-progress steps, and step details. +- [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): Resume a failed workflow run from the DLQ at the step where it failed, without re-running completed steps. +- [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 Workflow & QStash Integration](https://upstash.com/docs/workflow/integrations/datadog.md) +- [Prometheus - Upstash Workflow & 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 + +- [Upstash Workflow Pricing](https://upstash.com/docs/workflow/pricing.md) +- [Upstash Workflow 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)