MiniKV — это минималистичное высокопроизводительное хранилище данных типа «ключ-значение», написанное на Java. Оно поддерживает многопоточность и работает через сетевые сокеты по простому текстовому протоколу.
- Многопоточность: Использует
FixedThreadPoolдля одновременной обработки до 10 клиентских подключений. - Thread-Safe: Данные хранятся в
ConcurrentHashMap, что гарантирует целостность при параллельных запросах. - Простой протокол: Взаимодействие происходит через обычные текстовые команды (как в Redis).
- Легковесность: Никаких внешних зависимостей — только стандартная библиотека Java (JDK).
Сервер принимает следующие команды:
| Команда | Описание | Пример |
|---|---|---|
| SET | Сохранить значение по ключу | SET user:1 admin |
| GET | Получить значение по ключу | GET user:1 |
| DELETE | Удалить ключ и его значение | DELETE user:1 |
-
Компиляция:
javac MiniKV.java
-
Запуск сервера:
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. - Хранилище: Статическая потокобезопасная карта в оперативной памяти.
Примечание: Это учебный проект. Данные хранятся только в оперативной памяти и будут удалены при перезагрузке сервера.