## Purpose

Provide a shared caching layer (Redis-backed) for ingestion and content processing flows, with TTL-based invalidation and manual cache clearing.

## ADDED Requirements

### Requirement: Redis-backed cache service
The system MUST provide a Redis-backed cache service for use by ingestion and content processing flows.

The cache service MUST be runnable in local development via Docker Compose.

#### Scenario: Cache service available in Docker
- **WHEN** the Docker Compose stack is started
- **THEN** a Redis service is available to other services/scripts on the internal network

### Requirement: TTL-based invalidation
Cached entries MUST support TTL-based invalidation.

The system MUST define a default TTL and MUST allow overriding the TTL via environment/config.

#### Scenario: Default TTL applies
- **WHEN** a cached entry is written without an explicit TTL override
- **THEN** it expires after the configured default TTL

#### Scenario: TTL override applies
- **WHEN** a TTL override is configured via environment/config
- **THEN** new cached entries use that TTL for expiration

### Requirement: Cache key namespace
Cache keys MUST be namespaced by source and parameters so that different data requests do not collide.

#### Scenario: Two different sources do not collide
- **WHEN** the system caches a YouTube fetch and a WordPress fetch
- **THEN** they use different key namespaces and do not overwrite each other

### Requirement: Manual cache clear
The system MUST provide a script/command to manually clear the cache.

#### Scenario: Manual clear executed
- **WHEN** a developer runs the cache clear command
- **THEN** the cache is cleared and subsequent ingestion runs produce cache misses

