Files
HKSingleParty/99_references/supabase-examples/edge-functions/supabase/functions/upstash-redis-ratelimit
2025-05-28 09:55:51 +08:00
..
2025-05-28 09:55:51 +08:00
2025-05-28 09:55:51 +08:00

Rate limiting with Upstash Redis in Supabase Edge Functions

Redis is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker, and streaming engine. It is optimized for atomic operations like incrementing a value, for example for a view counter or rate limiting. We can even rate limit based on the user ID from Supabase Auth!

Upstash provides an HTTP/REST based Redis client which is ideal for serverless use-cases and therefore works well with Supabase Edge Functions.

Redis database setup

Create a Redis database using the Upstash Console or Upstash CLI.

Select the Global type to minimize the latency from all edge locations. Copy the UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN to your .env file. You'll find them under Details > REST API > .env.

cp supabase/.env.local.example supabase/.env.local

Run locally

Make sure you have the latest version of the Supabase CLI installed.

supabase start
supabase functions serve --env-file supabase/.env.local

Navigate to http://localhost:54321/functions/v1/upstash-redis-ratelimit.

Deploy

supabase functions deploy upstash-redis-ratelimit
supabase secrets set --env-file supabase/.env.local