Providers

Upstash

Serverless Redis — Details tab TCP endpoint vs REST URL/token; oke needs rediss:// only.

Upstash exposes the same database two ways: Redis protocol over TLS (TCP) and a separate HTTP REST API. oke's redis driver speaks TCP only.

The one rule

From the database Details / Connect panel, copy the Redis / TCP connection (rediss://…), never UPSTASH_REDIS_REST_URL / UPSTASH_REDIS_REST_TOKEN.

Find credentials (current console)

  1. Open console.upstash.comRedis → your database.
  2. On the database page (Details):
    • Endpoint, Port, Password (token) for TCP clients
    • Ready-made redis-cli / rediss:// snippets under Connect / Redis
  3. Ignore the REST tab values (UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN) for oke — those are for @upstash/redis / HTTP only.
process env
REDIS_URL=rediss://default:PASSWORD@usw1-example-12345.upstash.io:6379

TLS is mandatory — redis:// without TLS fails.

Production guidance

TopicGuidance
TransportTCP rediss:// for Bun / long-running servers
RESTEdge/serverless SDKs only — not wired to fx.store
PricingPer-request — watch command fan-out in hot KV paths
EvictionPlan max size / eviction; serverless still has quotas
ConsistencyGlobal replication options are product-specific — confirm region in Details

Do not put PgDog-style thinking on Redis: there is no separate “pooled hostname” toggle. Connection count pressure shows up as Upstash plan limits / timeouts, not a Neon-style -pooler suffix.

When debugging, open Details and confirm you are reading the Redis column, not the REST env var block that sits beside it on the same page.

Real gotcha — REST token ≠ Redis password

Using UPSTASH_REDIS_REST_TOKEN inside a rediss:// URL (or the reverse) yields WRONGPASS / NOAUTH. REST token and TCP password are different credentials on the same console page — copy from the Redis/TCP section.

Troubleshooting

Learn more

Next

On this page