Skip to main content
Declare Redis in floo.app.toml; the next deploy provisions it and injects the connection URL. Managed services covers the shared lifecycle: declaring, attaching credentials, and removal. Managed Redis is cache-only: treat its contents as disposable. floo makes no backup, restore, or durability guarantee for it; keep authoritative data in Postgres.
floo.app.toml

What gets injected

A named Redis handle provides REDIS_URL_<NAME> in upper case. [managed.cache] injects REDIS_URL_CACHE.
Every Redis service gets isolated dev and prod databases. The dev database is created with the service; the prod database is created on the first release or promote, and dev credentials are never copied to prod.

One handle is one instance

A managed Redis handle maps to exactly one instance, so every service that declares managed = ["redis:cache"] receives the same REDIS_URL_CACHE. A web process enqueuing a job and a worker draining it share one Redis by construction. The entire queue can be lost, so queued work must be regenerable from authoritative records in Postgres.

Separate concerns with named instances

To keep cache eviction away from your job queue, declare separate instances:
That injects REDIS_URL_CACHE and REDIS_URL_QUEUE, two physically separate databases. Each instance is one logical database. There is no SELECT n index switching, so named instances are how you separate concerns. A Rails app can point its cache store at REDIS_URL_CACHE and Action Cable at REDIS_URL_QUEUE. Use Sidekiq on REDIS_URL_QUEUE only for jobs your app can regenerate from Postgres; a separate instance adds no durability guarantee.

Health and throughput limits

floo can reject data-plane traffic when a database exceeds its request rate or its command allowance. A TCP connection or a PING does not prove application commands are getting through. Reduce request concurrency or batch commands, then contact team@getfloo.com to raise managed throughput. Run the doctor when a Redis database fails to appear or to go away:
It lists every managed resource of the app, preview branches included, whose provisioning or teardown failed (provision_failed or deprovision_failed), with the action to take, and exits non-zero when it finds one. Its output never contains credentials.

Debug a connection issue

Check that the service has env.managed including the Redis handle, and that REDIS_URL_<NAME> appears in floo env list.

Managed services

The shared lifecycle: declare, attach, inspect, remove.

Postgres

Connection values, pgvector, and preview database branches.