Skip to content

Implement Redis Provider #7

@cevheri

Description

@cevheri

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 RedisProvider class extending BaseDatabaseProvider
  • 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 INFO command, not SQL queries

Tasks

  • Create src/lib/db/providers/keyvalue/redis.ts
  • Add redis or ioredis npm package dependency
  • Implement connection (single connection, no pooling needed)
  • Implement query parser for Redis commands
  • Implement getSchema() - map keys/patterns to "tables"
  • Implement getHealth() using INFO command
  • 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 DatabaseProvider interface
  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions