floo.app.toml. The next deploy provisions it and injects the
connection URL. See Managed services for 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 providesREDIS_URL_<NAME> in upper case. [managed.cache]
injects REDIS_URL_CACHE.
One handle is one instance
A managed Redis handle maps to exactly one instance, so every service that declaresmanaged = ["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:REDIS_URL_CACHE and REDIS_URL_QUEUE, two physically separate
databases.
floo’s managed Redis is one logical database per instance. There is no SELECT n
index switching, so named instances are the way to 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
Managed Redis is billed as provider usage passed through at cost, and floo can reject data-plane traffic when a database exceeds its request rate or its command allowance. A TCP connection or aPING does not prove application commands are getting through.
floo runs a health check against every ready database once a minute. It writes a
random token under a reserved key, reads it back, and expires it. It never reads,
lists, overwrites, or deletes one of your keys, and its commands are billed to
floo rather than to your app.
Run the doctor when Redis work or cron coordination fails:
throttle_request_rate means requests are arriving faster than the database
allows. Reduce request concurrency or batch commands, then contact
team@getfloo.com
to raise managed throughput.
throttle_daily_limit means the database exhausted its daily or monthly command
allowance. Reduce command volume, then contact
team@getfloo.com
for paid capacity. throttle_temporary is throttling with no more specific
published reason. Retry later, and contact the same address if it persists.
Authentication, permission, configuration, missing, or stale-canary failures
need floo intervention. The doctor gives the matching action. Its output never
contains credentials or raw upstream responses.
Debug a connection issue
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.