1.4 KiB
1.4 KiB
2024-12-18 17:05:00 - Distributed Storage with Redis
Description
Implemented distributed storage using Redis (ioredis) to support horizontal scaling and persistence outside of local file systems, while retaining local storage for development.
Key Changes
- Dependencies: Added
ioredisand@types/ioredis. - Redis Manager: created
RedisClientManager.tsto manage connections:db0: Session Persistence (Rooms, Drafts, Games).db1: File Storage (Card Images, Metadata).- Enabled via environment variable
USE_REDIS=true.
- Persistence Manager: Updated
PersistenceManager.tsto read/write state to Redis DB 0 if enabled. - File Storage Manager: Created
FileStorageManager.tsto abstract file operations (saveFile,readFile,exists).- Uses Redis DB 1 if enabled.
- Uses Local FS otherwise.
- Card Service: Refactored
CardService.tsto useFileStorageManagerinstead offsdirect calls. - Server File Serving: Updated
server/index.tsto conditionally serve files:- If Redis enabled: Dynamic route intercepting
/cards/*to fetch from Redis DB 1. - If Local: Standard
express.staticmiddleware.
- If Redis enabled: Dynamic route intercepting
Configuration
USE_REDIS: Set totrueto enable Redis.REDIS_HOST: Defaultlocalhost.REDIS_PORT: Default6379.
Status
- Code implementation complete.
- Redis functionality verification (requires Redis instance).