This project is a **Key_Value Server implementation in java** that implements a **Replication**. It is designed to handle multiple clients, efficiently manage caching, and execute commands in a reliable and scalable manner.
## **Project Structure**
The project is organized into several directories, each responsible for different components of the system:
-**`/commands`**: Contains the implementation of command handling. This directory includes classes and methods that define how commands are processed, executed, and managed within the system.
-**`/clients`**: Manages client interactions with the system. This directory includes:
-**`master client `**: Handles the communication and request processing for the master client.
-**`replica client `**: Manage how replica client see or handle the incoming Commands from the master.
-**`/parser`**: how we parse the command (Resp).
-**`/handlers`**: how each type of clients handle its own business
-**`/server`**: Contains the core server components. This directory includes the main server logic, networking, and the orchestration of client requests and command executions.
-**`/storage`**: Focuses on the storage and caching mechanisms. This directory includes:
-**Storage system components**: Manages the Caching system.
-**Caching system components**: Implements caching strategies to improve performance and reduce latency.
## **Attention**
You have no thing to do with any thing that specific to **Rdb** it just like configuration that needed for synchronization with replica (like Redis).
## **Getting Started**
### **Prerequisites**
Before you start, make sure you have the following installed on your machine: