Upstash for Redis®*
*Redis is a registered trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd. Any use by Fly.io is for referential purposes only and does not indicate any sponsorship, endorsement or affiliation between Redis and Fly.io.
Upstash for Redis is a fully-managed, Redis-compatible database service offering global read replicas for reduced latency in distant regions. Upstash databases are provisioned inside your Fly organization, ensuring private, low-latency connections to your Fly applications.
See the What you Should Know section for more details about this service.
Upstash offers one free, resource-limited database per Fly organization. After that, all databases are billed by request count on a pay-as-you-go basis. Check the official Upstash Pricing page for details.
Your database charges will show up on your monthly Fly.io bill. You can track database usage details in the Upstash web console.
flyctl redis create
? Select Organization: fly-apps (fly-apps) ? Choose a primary region (can't be changed later) Madrid, Spain (mad) ? Optionally, choose one or more replica regions (can be changed later): Amsterdam, Netherlands (ams) ? Select an Upstash Redis plan: > Pay-as-you-go Free
To view more details about database usage, connection strings, and more, use:
flyctl redis dashboard <org_name>
Get a list of all of your Redis databases.
flyctl redis list
ID NAME ORG PLAN PRIMARY REGION READ REGIONS aaV829vaMVQGbi5 late-waterfall-1133 fly-apps Free mad ams
Note the database name, then fetch its status.
fly redis status late-waterfall-1133
Redis ID = aaV829vaMVDGbi5 Name = late-waterfall-1133 Plan = Free Primary Region = mad Read Regions = ams Private URL = redis://email@example.com
If you have
redis-cli installed, you can connect directly to your Redis database and run commands.
fly redis connect ? Select a database to connect to empty-water-3291 (sjc) 200M Proxying local port 16379 to remote [fdaa:0:6d6b:0:1::3]:6379 127.0.0.1:16379> set foo bar OK 127.0.0.1:16379> get foo "bar" 127.0.0.1:16379>
Upstash Redis instances can’t change their primary region or name, but the following may change:
- Read regions
- Pricing plan
- Eviction settings
flyctl redis update and follow the prompts. Changing region settings doesn’t cause downtime.
Deleting a Redis database can’t be undone. Be careful!
fly redis destroy my-redis-db
Your Redis database my-redis-db was deleted
Once provisioned, the database primary region cannot be changed.
Upstash Redis is available in all Fly regions via a private IPv6 address restricted to your Fly organization. Traffic is automatically routed to the nearest replica, or in the absence of nearby replicas, to the primary instance.
If you plan to deploy in a single region, ensure that your database is deployed in the same region as your application.
Replicas forward writes to the primary. Replicas can’t be written to. Writes are synchronous, and synchronous writes over geographical distance experience latency. Plan for this latency in your application design.
If you’re using Redis as region-local cache and don’t require a shared cache, setup separate databases per-region and enable object eviction.
By default, Upstash Redis will disallow writes when the max data size limit has been reached. If you enable eviction during creation on update, Upstash Redis will evict keys to free up space.
First, keys marked with a TTL will be evicted at random. In the absence of volatile keys, keys will be chosen randomly for eviction. This is roughly the combination of the
allkeys-random eviction policies available in standard Redis.
Note that items marked with an explicit TTL will expire accurately, regardless of whether eviction is enabled.