How sdevanathan96/rusty-redis works
rusty-redis is an in-memory, Redis-compatible RESP server. A client sends RESP commands through a connection; frames become parsed commands, which the keyspace task executes against the database and returns as RESP replies. Blocking list/stream operations and WATCH transactions are coordinated in the keyspace/connection layers. The graph preserves the documented command families and storage stages; some domain-handler and startup links rely on the README or SOURCE INDEX references rather than fully sampled implementations.
Main entry points: command.rs Command parsing and dispatch · db.rs Database and expiry · keyspace.rs Keyspace task · connection.rs Client connections
Components 22
Transport and Protocol
- Startup and listener
src/main.rs - Client connections
src/connection.rs - RESP codec
src/resp.rs - Pending requests
src/connection/pending.rs
Command Handling
- Command parsing and dispatch
src/command.rs - Argument parsing
src/command/args.rs - Command errors
src/command/error.rs - Generic commands
src/command/generic.rs - String commands
src/command/string.rs - List commands
src/command/list.rs - Stream commands
src/command/stream.rs - Strict integer parsing
src/int.rs
Keyspace Coordination
- Keyspace task
src/keyspace.rs - Blocking waiters
src/keyspace.rs - WATCH tracking
src/keyspace/watchers.rs
In-Memory Data
- Database and expiry
src/db.rs - String storage
src/db/string.rs - List storage
src/db/list.rs - Stream storage
src/db/stream.rs - Expiry clock
src/db/clock.rs
Transactions
- Transaction handling
src/connection/transaction.rs
Other components
- Redis client
Connections 28
- Redis client → Startup and listener: connects to
README.md - Startup and listener → Client connections: spawns clients
README.md - Startup and listener → Redis client: listens for
README.md - Client connections → RESP codec: encodes replies
src/connection.rs - Client connections → Pending requests: queues requests
src/connection.rs - Client connections → Keyspace task: submits requests
src/connection.rs - Pending requests → RESP codec: parses frames
src/connection/pending.rs - Pending requests → Command parsing and dispatch: parses commands
src/connection/pending.rs - Keyspace task → Command parsing and dispatch: executes commands
src/keyspace.rs - Command parsing and dispatch → Generic commands: dispatches
src/command.rs - Command parsing and dispatch → String commands: dispatches
src/command.rs - Command parsing and dispatch → List commands: dispatches
src/command.rs - Command parsing and dispatch → Stream commands: dispatches
src/command.rs - Command parsing and dispatch → Argument parsing: uses parsers
src/command/args.rs - Command parsing and dispatch → Command errors: returns errors
src/command.rs - Argument parsing → Strict integer parsing: parses integers
src/command/args.rs - Generic commands → Database and expiry: accesses data
src/command/generic.rs - String commands → Database and expiry: accesses data
src/command/string.rs - List commands → Database and expiry: accesses data
src/command/list.rs - Stream commands → Database and expiry: accesses data
- Database and expiry → String storage: delegates storage
src/db.rs - Database and expiry → List storage: delegates storage
src/db.rs - Database and expiry → Stream storage: delegates storage
src/db.rs - Database and expiry → Expiry clock: uses clock
src/db.rs - Keyspace task → WATCH tracking: tracks watches
src/keyspace.rs - Keyspace task → Blocking waiters: manages blockers
src/keyspace.rs - Transaction handling → Keyspace task: submits transaction
src/connection/transaction.rs - Transaction handling → Pending requests: queues parsed commands
src/connection/transaction.rs