Как построить кэш на стороне сервера в памяти в php? - PullRequest
5 голосов
/ 13 октября 2011

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

Есть ли способ создать кэш в памяти, к которому может обращаться серверный сценарий?Я не хочу хранить данные кеша в файле ..

Ответы [ 4 ]

3 голосов
/ 13 октября 2011

Вы можете использовать MemCache , если установлено.

Другой вариант - создание таблицы в MySQL с типом хранилища MEMORY .Вы по-прежнему будете использовать базу данных, но это будет намного быстрее.Но MemCache действительно уменьшит нагрузку на базу данных, потому что вы можете кэшировать данные вне базы данных, даже на другом сервере.

2 голосов
/ 13 октября 2011

На общем хостинге у вас может не быть доступной memcache.Отметьте APC в этом случае.Memcache действительно качается, если вы работаете на нескольких машинах.Если ваш сайт работает на одном веб-сервере, APC будет выполнять ту же работу (с меньшими издержками).

1 голос
/ 13 октября 2011

Memecached / Memcache являются наиболее широко используемыми решениями, если вы хотите иметь несколько серверов или иметь возможность доступа к кэшу с нескольких машин.

Однако, если вы хотите только свой кэшчтобы быть локальным (на той же машине, где выполняется код PHP), у вас есть другие, несколько более простые варианты:

Модуль APC может также хранить данные в памяти с помощью apc_add,apc_fetch и т. Д. *

Или вы можете использовать стандартные файлы в tmpfs.Преимущество в том, что он полностью переносимый, и вы можете настроить его очень быстро, если какая-либо система кэширования использует файлы.

0 голосов
/ 13 октября 2011

Try MemCache

Модуль Memcache предоставляет удобный процедурный и объектно-ориентированный интерфейс для высокоэффективного демона кэширования memcached, который был специально разработан для уменьшения нагрузки на базу данных в динамических веб-приложениях.

...