43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
## 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
|
|
|