Обзор Perl модулей для кэширования данных.

27.02.2004 15:46

Краткие характеристики модулей для кэширования блоков данных:

  • Cache - кэширование блоков данных в памяти текущего процесса (Cache::Memory) или на диске (Cache::File). Задается время жизни элемента, стратегия очистки кэша при превышении лимита на размер хранилища, возможно обращение к элементам кэша как к хэшу через tie-интерфейс. Cache является переработкой модуля Cache::Cache, имеет простой интерфейс и мощные возможности. Для хранения сложных структур нужно отдельно вызывать не set/get, а freeze/thaw методы.

  • Cache::Cache - прообраз модуля Cache, похож на него как по синтаксису, так и по функциям. Содержит Cache::MemoryCache, Cache::SharedMemoryCache (очень медленный), Cache::FileCache и т.д. Множество разнообразных функций, но относительно медленный.

  • Cache::FastMemoryCache - Расширение Cache::Cache для быстрого хранения блоков данных в памяти процесса, ориентирован в качестве замены Cache::MemoryCache для простых задач, например, когда не требуется свопинг кэша на диск.

  • Cache::FastMmap - Написанный с использованием языка Си модуль для кэширование данных в памяти между несколькими процессами (разделяемая память через mmap). Присутствует система автоматического контроля размера кэша и удаления устаревших элементов. Наиболее подходит при использовании с mod_perl. Отличается высокой производительностью. Существует похожий модуль Cache::Mmap, но большая часть кода в нем написана на Perl, он проигрывает Cache-FastMmap по производительности.

  • CGI::Cache - позволяет кэшировать на диске вывод cgi-скриптов использующих модуль CGI (в качестве ключа используются параметры запроса или cookie). Задается время жизни, максимальный размер файла.

  • Cache::Memcached - Perl API для memcached, системы для распределенного кэширования объектов в памяти.

  • File::Cache - безнадежно устарел, на смену ему пришел Cache::Cache.

  • Tie::Cache::LRU - немного устарел. Используется для кэшировании блоков данных в пределах одного процесса, используя алгоритм вытеснения из кэша устаревших элементов LRU. Может использоваться для создания хэшей с ограничением общего размера для всех элементов.