# Spec: Redis Actions ## Status Partially implemented. Integration tests cover relative `with.script_file` and `with.tls_ca` paths resolved from the step working directory. ## Scope This spec covers Redis action configuration acceptance, command agreement, and representative configuration errors. Conformance requires no Redis service. Command execution, response formats, scripts, pipelines, locks, credential transport, and connection lifecycle belong to executor unit and integration coverage. ## Goal Workflow authors can configure Redis actions and identify invalid configuration before commands reach a Redis service. ## Behavior `redis.` selects the Redis command. An explicit `with.command` must agree with that action name. Configured `redis.set` and `redis.get` actions with DAG-level connection settings pass `dagu validate` without contacting Redis. A relative `with.script_file`, `with.tls_ca`, `with.tls_cert`, or `with.tls_key` names a file under the step working directory. `with.max_result_size` caps the bytes a command result writes to stdout, 10 MiB by default; `0` means no limit. A larger result fails the step and writes nothing. ## Errors `dagu validate` rejects a conflicting `with.command` and an unrecognized `with.mode` with a nonzero exit code. When the step starts, cluster mode without `with.cluster_addrs` fails with `cluster_addrs is required for cluster mode`. A client certificate without its matching key fails with `both tls_cert and tls_key must be provided together`. These failures occur before connecting to Redis. Timeout, abort, lock cleanup, and service failures are outside this configuration conformance scope. ## Example ```yaml redis: host: redis.example.com port: 6379 steps: - action: redis.set with: key: greeting value: hello - action: redis.get with: key: greeting ```