Есть «веб-сервис»,в котором хотелось бы кешировать операции запросов в РСУБД с целью делать запросы в РСУБД по поводу состояния объектов мониторинга не чаще, чем «период кеширования».
Как обычно: если объекта в кеше нет или объект есть, но он неактуален - сделать запрос в РСУБД (после чего создать новый или обновить старый объект в кеше), иначе - взять из кеша.
Мне бы хватило кеша полностью in-memory, на структуре данных Perl.
Модификация переменной-«кеша» уровня модуля - работает. То есть, к некоторому моему удивлению, можно запросто при вызове curl http://localhost:port/mojo/route1 и http://localhost:port/mojo/route2 - модифицировать одну и ту же глобальную переменную, и все модификации будут благополучно сохраняться.
Как так может быть и к чему это может привести?
То ли запросы обрабатываются и morbo, и hypnotoad'ом последовательно, то ли... здесь мысль заходит в тупик, поскольку параллельность запросов вроде бы обеспечивается не fork'ом (ведь кеш успешно модифицируется из двух разных запросов), но, очевидно, и не thread'ами. В таком случае, учитывая тот факт, что на уровне ОС кроме процессов, потоков исполнения («тредов») и прерываний ничего в общем-то нет и та же асинхронная обработка происходит в потоках исполнения... что же всё-таки внутри параллельности обработки запросов hypnotoad'ом?