Поиск модуля Perl для хранения структуры Хеша в общей RAM

Я хотел бы сохранить структуру данных постоянно в RAM и иметь ее доступный от предразветвленных процессов веб-сервера в Perl.

Идеально я хотел бы, чтобы это вело себя как memcached, но без потребности в отдельном демоне. Какие-либо идеи?

5
задан noobi-1 19 June 2010 в 08:53
поделиться

3 ответа

IPC::SharedMem может подойти.

6
ответ дан 18 December 2019 в 10:42
поделиться

Используйте Cache::FastMap, и все, что вам нужно - это файл. Он использует mmap для обеспечения общего кэша в памяти для IPC, что означает, что он довольно быстрый. О возможных проблемах и предостережениях читайте в документации.

10
ответ дан 18 December 2019 в 10:42
поделиться

Mod_perl разделяет ОЗУ в системах с правильно реализованным разветвлением копирования при записи. Загрузите свой Perl-хеш в блок BEGIN вашей программы mod_perl, и все разветвленные экземпляры программы mod_perl будут совместно использовать память, пока нет операций записи на страницы, хранящие ваш хэш. Это не работает идеально (некоторые страницы будут записаны), но на моих серверах и данных это снижает использование памяти на 70-80%.

Mod_perl также ускоряет работу вашего сервера, устраняя время компиляции Perl при последующих веб-запросах. Обратной стороной mod_perl является то, что вы должны тщательно программировать и избегать программ, которые изменяют глобальные переменные, поскольку эти переменные, как и ваш хэш, используются всеми экземплярами mod_perl. Стоит выучить достаточно Perl, чтобы в любом случае не менять глобальные объекты!

Прирост производительности от mod_perl фантастический, но mod_perl недоступен на многих общих хостах.Легко ошибиться и трудно отладить, пока вы его изучаете. Я использую его только тогда, когда мои клиенты достаточно ценят улучшение производительности, чтобы оправдать мою боль в разработке.

0
ответ дан 18 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: