# mohan0621/os-redis architecture

> Architecture diagram of the GitHub repository mohan0621/os-redis, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mohan0621/os-redis
- Repository: https://github.com/mohan0621/os-redis

## Overview

This is a Redis-compatible in-memory server. Redis clients send RESP commands; the server parses each request, routes it through type-partitioned workers, dispatches it to a command handler, and returns a RESP result. The database facade delegates to per-type stores and manages expiration; the server also includes AOF logging and pool monitoring. The graph follows relationships visible in excerpts, the source index, or the documented module references; unsampled implementation details are not inferred.

Main entry points: [`src/com/redis/db/RedisDatabase.java`](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/RedisDatabase.java) (Database facade), [`src/com/redis/server/RedisClientHandler.java`](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/RedisClientHandler.java) (Client handler), [`src/com/redis/db/CommandHandler.java`](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/CommandHandler.java) (Command dispatcher), [`src/com/redis/server/RedisServer.java`](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/RedisServer.java) (Redis server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_serving["Server and protocol"]
  node_server["Redis server<br/>[RedisServer.java]"]
  node_client_handler["Client handler"]
  node_resp_parser["RESP parser<br/>[RespParser.java]"]
  node_resp_command["Parsed command<br/>[RespCommand.java]"]
  node_resp_writer["RESP writer<br/>[RespWriter.java]"]
  node_aof["AOF logger<br/>[AofLogger.java]"]
end

subgraph group_commands["Command execution"]
  node_dispatcher["Command dispatcher"]
  node_string_handler["String commands"]
  node_list_handler["List commands"]
  node_hash_handler["Hash commands"]
  node_set_handler["Set commands"]
  node_zset_handler["Sorted-set commands"]
  node_result["Command result<br/>[CommandResult.java]"]
end

subgraph group_data["Database and storage"]
  node_database["Database facade<br/>[RedisDatabase.java]"]
  node_stores[("Typed stores")]
  node_expiration["Expiration manager"]
end

subgraph group_concurrency["Routing and workers"]
  node_router["Command router<br/>[CommandRouter.java]"]
  node_partitions["Type partitions"]
  node_pool["Worker pool"]
  node_pool_queues["Bounded queues"]
  node_pool_monitor["Pool monitoring"]
end

node_client(("Redis client"))

node_client -->|"sends commands"| node_server
node_server -->|"handles connections"| node_client_handler
node_client_handler -->|"parses input"| node_resp_parser
node_resp_parser -->|"creates command"| node_resp_command
node_client_handler -->|"routes work"| node_router
node_client_handler -->|"executes command"| node_dispatcher
node_dispatcher -->|"dispatches"| node_string_handler
node_dispatcher -->|"dispatches"| node_list_handler
node_dispatcher -->|"dispatches"| node_hash_handler
node_dispatcher -->|"dispatches"| node_set_handler
node_dispatcher -->|"dispatches"| node_zset_handler
node_string_handler -->|"calls operations"| node_database
node_list_handler -->|"calls operations"| node_database
node_hash_handler -->|"calls operations"| node_database
node_set_handler -->|"calls operations"| node_database
node_zset_handler -->|"calls operations"| node_database
node_database -->|"delegates operations"| node_stores
node_database -->|"tracks expiry"| node_expiration
node_client_handler -->|"writes response"| node_resp_writer
node_client_handler -->|"returns result"| node_result
node_resp_writer -->|"encodes result"| node_result
node_server -->|"configures logging"| node_aof
node_router -->|"submits by type"| node_partitions
node_partitions -->|"uses queues"| node_pool_queues
node_server -->|"manages workers"| node_pool
node_pool -->|"queues tasks"| node_pool_queues
node_server -->|"starts monitoring"| node_pool_monitor
node_pool_monitor -->|"reads metrics"| node_pool

click node_server "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/RedisServer.java"
click node_client_handler "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/RedisClientHandler.java"
click node_resp_parser "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/protocol/RespParser.java"
click node_resp_command "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/protocol/RespCommand.java"
click node_resp_writer "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/protocol/RespWriter.java"
click node_aof "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/AofLogger.java"
click node_dispatcher "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/CommandHandler.java"
click node_string_handler "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/StringCommandHandler.java"
click node_list_handler "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/ListCommandHandler.java"
click node_hash_handler "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/HashCommandHandler.java"
click node_set_handler "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/SetCommandHandler.java"
click node_zset_handler "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/SortedSetCommandHandler.java"
click node_result "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/CommandResult.java"
click node_database "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/RedisDatabase.java"
click node_stores "https://github.com/mohan0621/os-redis/tree/main/src/com/redis/db/store"
click node_expiration "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/store/ExpirationManager.java"
click node_router "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/partition/CommandRouter.java"
click node_partitions "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/partition/DataTypePartition.java"
click node_pool "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/pool/RedisWorkerPool.java"
click node_pool_queues "https://github.com/mohan0621/os-redis/tree/main/src/com/redis/pool"
click node_pool_monitor "https://github.com/mohan0621/os-redis/blob/main/src/com/redis/pool/RedisPoolMonitor.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_client_handler,node_resp_parser,node_resp_command,node_resp_writer,node_aof toneBlue
class node_dispatcher,node_string_handler,node_list_handler,node_hash_handler,node_set_handler,node_zset_handler,node_result,node_client toneAmber
class node_database,node_stores,node_expiration toneMint
class node_router,node_partitions,node_pool,node_pool_queues,node_pool_monitor toneRose
```

## Components

### Server and protocol

- [Redis server](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/RedisServer.java): `src/com/redis/server/RedisServer.java`
- [Client handler](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/RedisClientHandler.java): `src/com/redis/server/RedisClientHandler.java`
- [RESP parser](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/protocol/RespParser.java): `src/com/redis/protocol/RespParser.java`
- [Parsed command](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/protocol/RespCommand.java): `src/com/redis/protocol/RespCommand.java`
- [RESP writer](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/protocol/RespWriter.java): `src/com/redis/protocol/RespWriter.java`
- [AOF logger](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/server/AofLogger.java): `src/com/redis/server/AofLogger.java`

### Command execution

- [Command dispatcher](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/CommandHandler.java): `src/com/redis/db/CommandHandler.java`
- [String commands](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/StringCommandHandler.java): `src/com/redis/db/handler/StringCommandHandler.java`
- [List commands](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/ListCommandHandler.java): `src/com/redis/db/handler/ListCommandHandler.java`
- [Hash commands](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/HashCommandHandler.java): `src/com/redis/db/handler/HashCommandHandler.java`
- [Set commands](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/SetCommandHandler.java): `src/com/redis/db/handler/SetCommandHandler.java`
- [Sorted-set commands](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/handler/SortedSetCommandHandler.java): `src/com/redis/db/handler/SortedSetCommandHandler.java`
- [Command result](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/CommandResult.java): `src/com/redis/db/CommandResult.java`

### Database and storage

- [Database facade](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/RedisDatabase.java): `src/com/redis/db/RedisDatabase.java`
- [Typed stores](https://github.com/mohan0621/os-redis/tree/main/src/com/redis/db/store): `src/com/redis/db/store`
- [Expiration manager](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/db/store/ExpirationManager.java): `src/com/redis/db/store/ExpirationManager.java`

### Routing and workers

- [Command router](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/partition/CommandRouter.java): `src/com/redis/partition/CommandRouter.java`
- [Type partitions](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/partition/DataTypePartition.java): `src/com/redis/partition/DataTypePartition.java`
- [Worker pool](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/pool/RedisWorkerPool.java): `src/com/redis/pool/RedisWorkerPool.java`
- [Bounded queues](https://github.com/mohan0621/os-redis/tree/main/src/com/redis/pool): `src/com/redis/pool`
- [Pool monitoring](https://github.com/mohan0621/os-redis/blob/main/src/com/redis/pool/RedisPoolMonitor.java): `src/com/redis/pool/RedisPoolMonitor.java`

### Other components

- **Redis client**

## Connections

- Redis client → Redis server: sends commands (evidence: `src/com/redis/server/RedisServer.java`)
- Redis server → Client handler: handles connections (evidence: `src/com/redis/server/RedisServer.java`)
- Client handler → RESP parser: parses input (evidence: `src/com/redis/server/RedisClientHandler.java`)
- RESP parser → Parsed command: creates command (evidence: `src/com/redis/protocol/RespParser.java`)
- Client handler → Command router: routes work (evidence: `src/com/redis/server/RedisClientHandler.java`)
- Client handler → Command dispatcher: executes command (evidence: `src/com/redis/server/RedisClientHandler.java`)
- Command dispatcher → String commands: dispatches (evidence: `src/com/redis/db/CommandHandler.java`)
- Command dispatcher → List commands: dispatches (evidence: `src/com/redis/db/CommandHandler.java`)
- Command dispatcher → Hash commands: dispatches (evidence: `src/com/redis/db/CommandHandler.java`)
- Command dispatcher → Set commands: dispatches (evidence: `src/com/redis/db/CommandHandler.java`)
- Command dispatcher → Sorted-set commands: dispatches (evidence: `src/com/redis/db/CommandHandler.java`)
- String commands → Database facade: calls operations (evidence: `src/com/redis/db/handler/StringCommandHandler.java`)
- List commands → Database facade: calls operations (evidence: `src/com/redis/db/handler/ListCommandHandler.java`)
- Hash commands → Database facade: calls operations (evidence: `src/com/redis/db/handler/HashCommandHandler.java`)
- Set commands → Database facade: calls operations (evidence: `src/com/redis/db/handler/SetCommandHandler.java`)
- Sorted-set commands → Database facade: calls operations (evidence: `src/com/redis/db/handler/SortedSetCommandHandler.java`)
- Database facade → Typed stores: delegates operations (evidence: `src/com/redis/db/RedisDatabase.java`)
- Database facade → Expiration manager: tracks expiry (evidence: `src/com/redis/db/RedisDatabase.java`)
- Client handler → RESP writer: writes response (evidence: `src/com/redis/server/RedisClientHandler.java`)
- Client handler → Command result: returns result (evidence: `src/com/redis/server/RedisClientHandler.java`)
- RESP writer → Command result: encodes result (evidence: `src/com/redis/protocol/RespWriter.java`)
- Redis server → AOF logger: configures logging (evidence: `src/com/redis/server/RedisServer.java`)
- Command router → Type partitions: submits by type (evidence: `src/com/redis/partition/CommandRouter.java`)
- Type partitions → Bounded queues: uses queues (evidence: `src/com/redis/partition/DataTypePartition.java`)
- Redis server → Worker pool: manages workers (evidence: `src/com/redis/server/RedisServer.java`)
- Worker pool → Bounded queues: queues tasks (evidence: `src/com/redis/pool/RedisWorkerPool.java`)
- Redis server → Pool monitoring: starts monitoring (evidence: `src/com/redis/server/RedisServer.java`)
- Pool monitoring → Worker pool: reads metrics (evidence: `src/com/redis/pool/RedisPoolMonitor.java`)
