-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Title: feat: Add Redis database provider support
Overview
Redis is a key-value store, which is fundamentally different from SQL databases. This requires a different approach while maintaining the same provider interface.
Requirements
- Implement
RedisProviderclass extendingBaseDatabaseProvider - Support Redis commands via query interface
- Map Redis keys/values to table-like schema representation
- Implement basic monitoring (info, memory stats)
- Handle Redis-specific operations
Challenges
- Redis is key-value, not relational - schema representation needs creative mapping
- Commands are different from SQL
- No traditional "tables" - keys act as data containers
- Monitoring uses
INFOcommand, not SQL queries
Tasks
- Create
src/lib/db/providers/keyvalue/redis.ts - Add
redisorioredisnpm package dependency - Implement connection (single connection, no pooling needed)
- Implement query parser for Redis commands
- Implement
getSchema()- map keys/patterns to "tables" - Implement
getHealth()usingINFOcommand - Implement basic monitoring (memory, clients, stats)
- Add Redis to factory (
src/lib/db/factory.ts) - Add Redis to types (
src/lib/types.ts) - Document Redis command format
- Test with Redis 6.0+
Dependencies
{
"ioredis": "^5.3.0"
}Query Format
Redis queries could use a simple command format:
{
"command": "GET",
"key": "user:123"
}Or support direct Redis commands:
GET user:123
SET user:123 "value"
KEYS user:*
Acceptance Criteria
- Redis provider implements
DatabaseProviderinterface - Basic Redis commands work (GET, SET, KEYS, etc.)
- Schema introspection shows key patterns as "tables"
- Monitoring returns Redis INFO data
- Error handling is clear for invalid commands
References
- ioredis npm package
- Base class:
src/lib/db/providers/base-provider.ts
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request