Give Redis a scheduler, triggers, and a DAG.

Redis is a fast data store and event bus, not a workflow engine. Kestra adds the layer it lacks: schedule cache warming and invalidation, consume a Redis list as a real-time trigger, and coordinate Redis with your databases, APIs, and LLMs, all with retries and one execution history.

Blueprints for Redis orchestration.

Redis stores, queues, and publishes data at millisecond latency, but it has no scheduler, no DAG, and no retry or replay layer. Kestra supplies all of it: it warms and invalidates caches on a Schedule, turns each item on a Redis list into a governed execution with RealtimeTrigger, and coordinates Redis with Postgres, APIs, and LLMs in one flow. Redis stays the fast layer; Kestra makes it part of a pipeline.

Push Redis list events into a database in real timeOpen blueprint
Cut LLM API cost with a Redis semantic cacheOpen blueprint
Write many Redis keys in parallel from JSONOpen blueprint
Browse all 8 Redis blueprints

A workflow engine on top of Redis.

Redis runs the cache, the lists, and the pub/sub. Kestra runs the steps around the key: what triggers the flow, what feeds it, what runs next, and how Redis stays in sync with everything else.

A real-time trigger on a Redis list

Redis pub/sub and lists move messages fast, but cannot run a multi-step, multi-system pipeline per message. io.kestra.plugin.redis.list.RealtimeTrigger pops each item off a list and starts one execution per event, so a message becomes a governed run that fans out to Postgres, an API, or a notification, with retries and history.

Scheduled cache warming and invalidation

Redis has TTL, but no cron, no dependency ordering, and no alert on failure. Kestra runs io.kestra.plugin.redis.string.Set and json.Set on a Schedule to warm a cache from the source of truth, and Delete or Ttl to invalidate it, with retries and a logged run the moment a warm fails.

Semantic LLM cache to cut API cost

Calling an LLM for a question you already answered is wasted spend. Kestra hashes the prompt, checks Redis with string.Get, and only calls the model on a true miss behind an If branch, writing the answer back with string.Set. Repeated questions return instantly from Redis instead of hitting the API again.

Keep Redis and the database in sync

A cache is only useful when it matches the system of record. Kestra reads fresh rows from Postgres or another database, writes them to Redis as keys, and shares key-value state across flows, so the cache and the source stay consistent without hand-written sync scripts.

Parallel bulk key operations

Loading thousands of keys one request at a time is slow. Kestra fans a JSON payload out with ForEach and writes each entry to Redis in parallel with string.Set, so a bulk seed or refresh finishes in one short, observable run instead of a serial loop you have to babysit.

Bridge Redis with messaging and AI

Redis rarely works alone; it sits beside Kafka, AMQP, and model APIs. Kestra wires those together in one flow, consuming a Redis list and producing to a message broker, or caching embeddings between an LLM and a vector store, so Redis becomes one node in a real-time pipeline, not an island.

How teams use Redis and Kestra

Patterns platform and data engineering teams run in production today. Each one shows the flow end to end, with the real plugin classes in play.

Real-time

Drain a Redis list into a database in real time

An upstream service pushes events onto a Redis list. The RealtimeTrigger pops each item the instant it lands and starts one execution that writes the record into a database, then confirms in Slack. Streaming ingestion with no polling and one run per event.

One execution per event

Each item popped off the list starts its own governed run with the payload.

No polling lag

RealtimeTrigger consumes the list continuously, not on a cron tick.

Any database target

Swap the Cassandra task for Postgres or another store.

RealtimeTrigger icon
redis trigger
LPOP per item
Query icon
db write
insert record
SlackIncomingWebhook icon
slack
on insert
LLM cache

Cache LLM answers to cut API cost

FAQ-style questions hit the same answers repeatedly. Kestra normalizes and hashes the prompt, checks Redis with string.Get, and only calls the model on a true miss behind an If, writing the result back with string.Set. Repeated questions return instantly instead of re-billing the API.

Pay once per answer

The model is called only on a genuine cache miss, not on every repeat.

Deterministic keys

Normalizing and hashing the prompt maps equivalent questions to one key.

Instant on a hit

A cached answer returns straight from Redis with no API round trip.

Script icon
hash key
normalize prompt
Get icon
redis get
lookup
If icon
cache miss?
branch
ChatCompletion icon
llm call
on miss only
Set icon
redis set
store answer
Bulk writes

Write thousands of keys in parallel from JSON

Seeding or refreshing a cache one key at a time is slow. Kestra takes a JSON payload, fans it out with ForEach, and writes each entry to Redis in parallel with string.Set, finishing a bulk load in one short run and pinging Discord when it completes.

Parallel, not serial

ForEach writes keys concurrently instead of looping one request at a time.

Bulk seed or refresh

Load a full key set from a single JSON input in one observable run.

NX and TTL options

Set options like mustNotExist and TTL control overwrite and expiry.

ForEach icon
for each
split payload
Set icon
redis set
write key
DiscordIncomingWebhook icon
discord
on complete
Cache warm

Warm and invalidate a cache on a schedule

A cache drifts from the database unless something refreshes it. On a Schedule, Kestra reads the latest rows from Postgres, writes them to Redis with json.Set, and clears stale entries with Delete, so reads stay fast and current without a hand-written cron script.

Cache matches the source

Each run refreshes Redis from the system of record so reads stay current.

Invalidate on schedule

Delete clears stale keys as part of the same warming run.

Alert on a failed warm

A failed refresh logs and notifies, instead of silently serving stale data.

Schedule icon
schedule
every 15 min
Query icon
query source
fresh rows
Set icon
redis set
warm cache
Delete icon
redis delete
invalidate stale
Shared state

Share key-value state across flows

Flows often need a small piece of shared state: a cursor, a feature flag, a last-run marker. Kestra writes a JSON value to Redis with string.Set and reads it back later with string.Get, giving separate flows a fast, central place to coordinate without a database.

JSON values

serdeType: JSON stores and retrieves structured objects, not just strings.

Coordinate across flows

One flow writes a cursor or flag; another reads it on its next run.

Faster than a database

Shared state lives in memory, so reads and writes return in milliseconds.

Set icon
redis set
write state
Get icon
redis get
read elsewhere

Kestra vs the orchestration alternatives Redis teams evaluate

Capability
Temporal
Airflow
n8n
Trigger a pipeline from a Redis list or stream
Native RealtimeTrigger
Custom worker codeCustom sensorRedis trigger node
Schedule cache warming and invalidation
Schedule + Set/Delete tasks
Code your ownCron + Python operatorsCron + nodes
Semantic LLM cache with Redis
Get, If, and model tasks
Hand-coded activitiesPython operatorsFunction nodes
Coordinate Redis with databases and APIs
Native plugins
Activity code per serviceOperators, Python requiredOne node per service
Parallel bulk key writes
ForEach + Set
Code your ownDynamic tasks, PythonSplit and loop nodes
Declarative YAML, no code required
Pure YAML
Go, Java, or TS codePython DAGsVisual + JS functions
Retries, backfills, replay from failure
Per-task, built in
Yes, in codeYes, Python configLimited

Redis & Kestra: common questions

Find answers to your questions right here, and don't hesitate to Contact Us if you couldn't find what you're looking for.

See How

Ready to orchestrate your Redis workflows?

Consume lists as real-time triggers, warm and invalidate caches on a schedule, build a semantic LLM cache, and coordinate Redis with your databases and APIs in one flow. Open source, self-hosted, event-driven.