Thursday, September 23, 2010

Мои инструменты кэширования

Классы, написанные мной, которые я использую для кэширования. Да, я знаю про memcached, Redis и им подобные. Если Вам действительно нужно много кэшировать (гигабайты информации), используйте именно их. Ну а мне, в данный момент, для кэширования хватает 30 Mb памяти, поэтому я использую свой код. Если размера кэша дойдёт до 1 Gb, я, так и быть, установлю memcached :)

Для использования необходимо наличие включённого shmop в PHP, работает это только в unix-системах.

При создании этих классов я многое узнал, многому научился, улучшил навыки и приобрёл некоторые хорошие привычки программирования. Не пытаюсь сказать, что код идеален, просто... не бойтесь писать свой код.

Сегодня я добавил в MultiAccess возможность автоматического освобождения мьютекса при выходе из функции (шаблон RAII). Это прекрасное ощущение свободы, когда ты не боишься пропустить точки выхода из функции.
В связи с этим замечательным новшеством, усовершенствовал код классов, использующих MutliAccess.

Итак, код: https://github.com/jamm/memory
Код классов продокументирован в phpDoc, читать его должно быть просто. Старался документировать каждую функцию.


Классы:
Memory - работа с памятью (запись, чтение, удаление, инкремент).
mem - хранение карты хэшей в отдельном участке памяти и обслуживание этой памяти.
MultiAccess - обеспечение доступа "multiple read, one write" к памяти (и к любым другим ресурсам).
Код всех этих классов распространяется под свободной лицензией MIT. Пользуйтесь, буду рад, если пригодится.

No comments:

Post a Comment