Redis
Per-project Redis 7 — tenant-isolated key-value store for caching, sessions, queues, counters, and pub/sub. Pro+ plans only.
Basics
# SET with TTL curl -X POST $API/{slug}/redis/set \ -H "X-API-Key: $KEY" \ -d '{"key":"session:abc","value":"user-data-json","ttl":3600}' # GET curl -X POST $API/{slug}/redis/get \ -H "X-API-Key: $KEY" -d '{"key":"session:abc"}' # DELETE multiple curl -X POST $API/{slug}/redis/delete \ -H "X-API-Key: $KEY" -d '{"keys":["key1","key2"]}'
Atomic counters
curl -X POST $API/{slug}/redis/incr \ -H "X-API-Key: $KEY" \ -d '{"key":"page:views","amount":1,"ttl":86400}'
Lists (queues, stacks)
# Push (right end of list) curl -X POST $API/{slug}/redis/rpush \ -H "X-API-Key: $KEY" \ -d '{"key":"queue:jobs","values":["task1","task2"],"ttl":3600}' # Pop (left end — FIFO queue) curl -X POST $API/{slug}/redis/lpop \ -H "X-API-Key: $KEY" -d '{"key":"queue:jobs"}'
Pub/subRedis
publish sends messages on a channel. To subscribe, use the Realtime WebSocket — it consumes Redis pub/sub internally with auth and filters.Best practices
- Structured key names —
session:{id},cache:user:{id},queue:{name} - Always set a TTL — keys without one default to 1 hour, max 7 days
- Max value size: 512 KB
- Use
incr/decrfor counters — atomic, no race conditions - Reserved prefix: keys starting with
__
Endpoints
| Endpoint | Method | Body |
|---|---|---|
| /{slug}/redis/set | POST | {key, value, ttl?} |
| /{slug}/redis/get | POST | {key} |
| /{slug}/redis/delete | POST | {keys: [...]} |
| /{slug}/redis/mget | POST | {keys: [...]} |
| /{slug}/redis/mset | POST | {items: {...}, ttl?} |
| /{slug}/redis/expire | POST | {key, ttl} |
| /{slug}/redis/ttl | POST | {key} |
| /{slug}/redis/incr | POST | {key, amount?, ttl?} |
| /{slug}/redis/decr | POST | {key, amount?, ttl?} |
| /{slug}/redis/lpush | POST | {key, values, ttl?} |
| /{slug}/redis/rpush | POST | {key, values, ttl?} |
| /{slug}/redis/lpop | POST | {key} |
| /{slug}/redis/rpop | POST | {key} |
| /{slug}/redis/lrange | POST | {key, start?, stop?} |
| /{slug}/redis/publish | POST | {channel, message} |
| /{slug}/redis/keys | POST | {pattern?, count?} |
| /{slug}/redis/usage | GET | — |
| /{slug}/redis/flush | POST | Flush all keys |