Simple IMDG service for Ozon Fintech internship
- set key
- get key
- delete key
- count number of DB elements
- memstats
- clean DB
- backup (save JSON to file)
- manage client connections
- warn clients before closing
- backup memory records before exiting
source run.sh
telnet localhost 8080
# set a key in memory db
set key val
# get a key from the memory db
get key
# delete a key from the memory db
delete key
# count shows number of db elements
count
# clean nil db
clean
# backup saves db to file as JSON
backup
# memstats shows allocaed memory
memstats
#exit disconnect user
exit
Требования:
- Возможность добавить, искать и удалять произвольный набор байт по ключу
- консистентность при параллельных запросах к хранилищу
- соблюдение ограничения на размер базы (по объему, задаваемый из конфига)
- тестовый пример: клиент, пишущий и читающий из хранилища
Далее по возможности/желанию можно развить работу:
- сделать бенчмарк
- добавить поддержку TTL для ключей
- добавить поддержку персистентности, чтобы хранилище переживало рестарт
- добавить поддержку типов
- добавить поддержку репликации
- etc
- TCP(telnet) server launch
- Users connect/act/disconect
- Data consistency (Mutex)
- Graceful Shutdown with data backup
- set/get/delete/count operations defined for [string]string
- соблюдение ограничения на размер базы (по объему, задаваемый из конфига)
- тестовый пример: клиент, пишущий и читающий из хранилища
- Рефакторинг для более эффектиной работы TTL и элементов разних типов.
- Автоматический клиент с заданными пармаетрами подключений и запросов
source run.sh (PORT) (MAX_VOLUME) (TIMEOUT)