feat: reword phase to epic, update mkdocs
This commit is contained in:
64
docs/content/stories/epic5/5.1-cache-system.md
Normal file
64
docs/content/stories/epic5/5.1-cache-system.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Story 5.1: Cache System (Redis)
|
||||
|
||||
## Metadata
|
||||
- **Story ID**: 5.1
|
||||
- **Title**: Cache System (Redis)
|
||||
- **Epic**: 5 - Infrastructure Adapters
|
||||
- **Status**: Pending
|
||||
- **Priority**: High
|
||||
- **Estimated Time**: 4-5 hours
|
||||
- **Dependencies**: 1.1
|
||||
|
||||
## Goal
|
||||
Implement a complete Redis-based caching system with a clean interface that can be swapped for other cache implementations.
|
||||
|
||||
## Description
|
||||
This story implements a Redis cache adapter with a clean interface, allowing modules to cache data efficiently. The cache system supports TTL, key-based operations, and optional cache middleware for HTTP responses.
|
||||
|
||||
## Deliverables
|
||||
|
||||
### 1. Cache Interface (`pkg/infra/cache/cache.go`)
|
||||
- `Cache` interface with:
|
||||
- `Get(ctx context.Context, key string) ([]byte, error)`
|
||||
- `Set(ctx context.Context, key string, value []byte, ttl time.Duration) error`
|
||||
- `Delete(ctx context.Context, key string) error`
|
||||
- `Exists(ctx context.Context, key string) (bool, error)`
|
||||
- `Clear(ctx context.Context) error`
|
||||
|
||||
### 2. Redis Implementation (`internal/infra/cache/redis_cache.go`)
|
||||
- Redis client setup
|
||||
- Connection pooling
|
||||
- All interface methods implemented
|
||||
- Error handling
|
||||
- Connection health checks
|
||||
|
||||
### 3. Configuration
|
||||
- Redis config in `config/default.yaml`:
|
||||
- Connection URL
|
||||
- Pool settings
|
||||
- Default TTL
|
||||
|
||||
### 4. DI Integration
|
||||
- Provider function for Cache
|
||||
- Register in DI container
|
||||
|
||||
### 5. Optional Cache Middleware
|
||||
- HTTP response caching middleware
|
||||
- Configurable cache keys
|
||||
- TTL per route
|
||||
|
||||
## Acceptance Criteria
|
||||
- [ ] Cache interface is defined
|
||||
- [ ] Redis implementation works correctly
|
||||
- [ ] Cache operations (get, set, delete) work
|
||||
- [ ] TTL is respected
|
||||
- [ ] Cache is injectable via DI
|
||||
- [ ] Configuration is loaded from config
|
||||
- [ ] Optional middleware works
|
||||
|
||||
## Files to Create/Modify
|
||||
- `pkg/infra/cache/cache.go` - Cache interface
|
||||
- `internal/infra/cache/redis_cache.go` - Redis implementation
|
||||
- `internal/di/providers.go` - Add cache provider
|
||||
- `config/default.yaml` - Add Redis config
|
||||
|
||||
Reference in New Issue
Block a user