45 lines
1.7 KiB
Markdown
45 lines
1.7 KiB
Markdown
# LRU Cache Server
|
||
|
||
Высоконагруженный in-memory key-value сервер с алгоритмом вытеснения LRU и текстовым протоколом на C++.
|
||
|
||
---
|
||
|
||
## Описание проекта
|
||
|
||
Система кэширования данных типа "ключ-значение" (аналог Redis/Memcached) для ускорения доступа к часто запрашиваемым данным в высоконагруженных приложениях.
|
||
|
||
**Особенности:**
|
||
- Алгоритм вытеснения LRU (Least Recently Used)
|
||
- Конкурентный доступ к данным
|
||
- Множество TCP-подключений
|
||
- Текстовый протокол
|
||
|
||
---
|
||
|
||
## Функциональные требования
|
||
|
||
| Команда | Описание |
|
||
|---------|----------|
|
||
| `SET key value [ttl]` | Сохранить пару с опциональным временем жизни |
|
||
| `GET key` | Получить значение или "MISS" |
|
||
| `DEL key` | Удалить пару |
|
||
| `STATS` | Показать статистику (хиты/промахи, RPS) |
|
||
| `CLEAR` | Очистить весь кэш |
|
||
| `HELP` | Показать список доступных команд |
|
||
|
||
---
|
||
|
||
## Технологический стек
|
||
|
||
- **Язык:** C++17/20
|
||
- **Компилятор:** GCC 11+, Clang 14+, MSVC 2022
|
||
- **Система сборки:** CMake 3.10+
|
||
- **Сеть:** POSIX sockets (epoll/kqueue)
|
||
- **Хранилище:** std::unordered_map + std::list для LRU
|
||
- **Многопоточность:** std::thread + std::mutex + std::atomic
|
||
|
||
---
|
||
|
||
## Структура проекта
|
||
|