Skip to content

Linux0idix/MiniKV-In-Memory-Key-Value-Store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

🚀 MiniKV: In-Memory Key-Value Store

MiniKV — это минималистичное высокопроизводительное хранилище данных типа «ключ-значение», написанное на Java. Оно поддерживает многопоточность и работает через сетевые сокеты по простому текстовому протоколу.

✨ Особенности

  • Многопоточность: Использует FixedThreadPool для одновременной обработки до 10 клиентских подключений.
  • Thread-Safe: Данные хранятся в ConcurrentHashMap, что гарантирует целостность при параллельных запросах.
  • Простой протокол: Взаимодействие происходит через обычные текстовые команды (как в Redis).
  • Легковесность: Никаких внешних зависимостей — только стандартная библиотека Java (JDK).

🛠 Команды сервера

Сервер принимает следующие команды:

Команда Описание Пример
SET Сохранить значение по ключу SET user:1 admin
GET Получить значение по ключу GET user:1
DELETE Удалить ключ и его значение DELETE user:1

🚀 Запуск

  1. Компиляция:

    javac MiniKV.java
  2. Запуск сервера:

    java MiniKV

    Сервер запустится на порту 9090.

🔌 Как подключиться?

Вы можете использовать любой TCP-клиент, например Telnet или Netcat (nc).

Пример сессии:

$ nc localhost 9090
SET name alex
OK
GET name
alex
DELETE name
OK
GET name
NULL

🏗 Архитектура

  • Сетевой уровень: ServerSocket ожидает подключения и передает их в пул потоков.
  • Уровень обработки: Каждый клиент обрабатывается в отдельном потоке внутри метода handleClient.
  • Хранилище: Статическая потокобезопасная карта в оперативной памяти.

Примечание: Это учебный проект. Данные хранятся только в оперативной памяти и будут удалены при перезагрузке сервера.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages