Pular para o conteúdo
Skillpedia
Bancos de dados48 mil · #4458

upstash-redis

Permite usar o Redis em ambientes serverless sem gerenciar conexões. É útil para cache, sessões e estruturas de dados.

O que ela faz

Permite que aplicações salvem e recuperem dados rapidamente usando o Upstash Redis, mesmo em ambientes que não suportam conexões diretas. É como um "cofre" rápido para informações importantes.

Quando usar

  • ✓Quando você precisa guardar informações temporárias (cache).
  • ✓Para gerenciar sessões de usuários em sites.
  • ✓Para contar eventos, como visitas ou cliques.

Exemplo do que pedir para a IA

“Salve o nome do usuário 'Maria' com o ID 'user:123' e faça com que ele expire em 1 hora.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/upstash-redis/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/upstash-redis/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A aplicação envia os dados para o Upstash Redis através de requisições pela internet. O Upstash Redis guarda esses dados e os devolve quando a aplicação pede.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill upstash-redis

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/upstash-redis/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Upstash Redis

Visão Geral

@upstash/redis é um cliente Redis que se comunica com um banco de dados Upstash Redis via HTTPS em vez de uma conexão TCP. Como cada comando é uma requisição HTTP sem estado, ele funciona em ambientes onde um cliente TCP com pool é complicado ou impossível: funções Vercel e Netlify, Cloudflare Workers, Deno, Bun e middleware Next.js. O cliente serializa e desserializa valores JavaScript automaticamente, portanto números e objetos são convertidos sem necessidade de JSON.parse manual.

Quando Usar Esta Habilidade

  • Use quando o usuário precisar de um cache, armazenamento de sessão, contador, ranking ou fila simples de uma função serverless ou edge.
  • Use quando o usuário mencionar Upstash Redis, UPSTASH_REDIS_REST_URL ou @upstash/redis.
  • Use ao migrar um site de chamada ioredis ou node-redis para um runtime que não pode manter um socket TCP persistente.
  • Não use para um servidor Redis auto-hospedado ou não-Upstash; o cliente só fala o protocolo REST do Upstash. Use ioredis ou node-redis para isso.
  • Não use para administração ou trabalho de CLI do Redis; veja redis-cli.

Como Funciona

Passo 1: Configurar credenciais

Crie um banco de dados no console Upstash e copie a URL REST e o token para variáveis de ambiente. Nunca as codifique diretamente.

UPSTASH_REDIS_REST_URL=https://<your-db>.upstash.io
UPSTASH_REDIS_REST_TOKEN=<your-rest-token>

Passo 2: Criar um cliente por módulo

import { Redis } from "@upstash/redis";

export const redis = Redis.fromEnv();

No Cloudflare Workers, importe de @upstash/redis/cloudflare e passe o objeto env do worker: Redis.fromEnv(env).

Passo 3: Chamar comandos Redis como métodos

Os nomes dos comandos são métodos em minúsculas (get, set, hset, zadd, incr). Os valores são auto-serializados; passe e receba tipos nativos do JavaScript.

Exemplos

Exemplo 1: Cache-aside com TTL

import { Redis } from "@upstash/redis";

const redis = Redis.fromEnv();

export async function getUser(id: string) {
  const cached = await redis.get<{ id: string; name: string }>(`user:${id}`);
  if (cached) return cached;

  const user = await db.users.findById(id);
  await redis.set(`user:${id}`, user, { ex: 3600 }); // expires in 1 hour
  return user;
}

export async function invalidateUser(id: string) {
  await redis.del(`user:${id}`);
}

Exemplo 2: Agrupar comandos em um pipeline

const pipeline = redis.pipeline();
pipeline.hset("user:1", { name: "Alice", plan: "pro" });
pipeline.incr("signups:total");
pipeline.zadd("leaderboard", { score: 120, member: "user:1" });
const [hsetResult, signups, zaddResult] = await pipeline.exec();

pipeline() agrupa comandos independentes em uma única ida e volta. Não é atômico; use redis.multi() para MULTI/EXEC ou um script Lua revisado no lado do servidor quando os comandos precisam ser executados como uma unidade.

Melhores Práticas

  • ✅ Leia credenciais com Redis.fromEnv() ou de um gerenciador de segredos.
  • ✅ Defina um TTL ({ ex: seconds }) nas entradas do cache para que dados desatualizados expirem.
  • ✅ Use namespace nas chaves (user:123, session:abc) para manter o keyspace legível.
  • ✅ Use pipeline() ou mget/mset em vez de muitos awaits sequenciais.
  • ❌ Não JSON.stringify valores antes de set; o cliente já faz isso.
  • ❌ Não chame keys("*") em manipuladores de requisição; use scan para keyspaces grandes.
  • ❌ Não armazene segredos ou PII no Redis sem um plano de retenção e TTL.

Limitações

  • Requer um banco de dados Upstash Redis; não pode se conectar a outros servidores Redis.
  • Cada comando é uma requisição HTTP, então a latência é maior do que uma conexão TCP quente; use pipelines em lote onde for importante.
  • Transações (multi()) não revertem em erros de runtime, e WATCH não está disponível via REST; use um script Lua para check-and-set atômico.
  • Comandos Pub/Sub de subscribe e bloqueantes (BLPOP, XREAD BLOCK) não são suportados pelo cliente REST.
  • Esta habilidade cobre apenas o cliente TypeScript. Python, Go e outros SDKs têm nomes de métodos diferentes.
  • Esta habilidade não substitui validação específica do ambiente, testes ou revisão especializada.

Notas de Segurança e Proteção

  • O token REST concede acesso total de leitura/escrita ao banco de dados. Mantenha-o em variáveis de ambiente do lado do servidor; nunca o envie para um bundle do navegador.
  • Use um token somente leitura do console para cargas de trabalho somente leitura.
  • Comandos como flushdb e del são destrutivos; confirme com o usuário antes de executá-los em um banco de dados de produção.

Armadilhas Comuns

…

Perguntas frequentes

Por que usar o Upstash Redis em vez de um banco de dados normal?

Ele é otimizado para ser muito rápido e funciona bem em ambientes modernos de programação (serverless/edge) que não lidam bem com conexões de longa duração.

O que são 'chaves' e 'valores'?

Pense em 'chaves' como os nomes dos arquivos e 'valores' como o conteúdo desses arquivos. Você usa a chave para encontrar e recuperar o valor.

Posso guardar qualquer tipo de informação?

Sim, você pode guardar textos, números e até estruturas de dados mais complexas como objetos. O sistema cuida da conversão automaticamente.

Detalhes

Descrição original do autor

Use the @upstash/redis HTTP client for caching, sessions, counters, and Redis data structures from serverless and edge runtimes without connection pooling.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4458
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas