Написать in-memory хранилище типа “ключ-значение”.
- Хранилище поддерживает операции: PUT, READ, DELETE;
- Хранилище гарантирует thread-safety операции;
- Хранилище поддерживает TTL для ключей;
- Хранилище имеет механизм автоматической очистки истёкших ключей;
- Хранилище общается с клиентом по TCP: 5.1 Создание ключа: должна быть возможность задать название ключа, время жизни, значение; 5.2 Удаление ключа: по названию; 5.3 Чтение ключа: по названию.
- Хранилище умеет хранить только простые строковые значения;
- Хранилище умеет сбрасывать кэш на диск и читать информацию с него.
Операции автоматической очистки и сброса, чтения и вставки желательно реализовать максимально эффективно.
В идеале придумать решение сборки мусора (экспирации ключей по TTL) за оптимальное время (с точки зрения алгоритма). Т.е. подумать, какую структуру данных использовать для кэша.