Я создал форум, и мы реализуем решение кэширования apc и memcache для сохранения работы базы данных.Кэширование с разбивкой по страницам результатов, очистка от обновления - как решить?
Я начал внедрять слой кэша с такими ключами, как «Категории :: getAll», и если бы у меня были данные, специфичные для пользователя, я бы добавил ключи с такими же файлами, как идентификатор пользователя, поэтому вы получите "User::getFavoriteThreads|1471"
. Когда пользователь добавил новый любимый поток, я бы удалил ключ кеша, и он воссоздал запись.
Однако и здесь возникает проблема:
Я хотел кэшировать темы на форуме. Достаточно просто, «Форум :: getThreads | $ iForumId». Но ... С пагинацией, я должен был бы разделить это на несколько записей кэша, например
"Forum::getThreads|$iForumId|$iLimit|$iOffset".
Что хорошо, пока кто-то вывешивает новую тему на форуме. Теперь я должен удалить все ключи под номером "Forum::getThreads|$iForumId"
, независимо от того, какой предел и смещение.
Что было бы хорошим способом решения этой проблемы? Я бы предпочел не перебирать все возможные пределы и смещать, пока не найду что-то, что больше не соответствует.
Спасибо.
Я не знаю, о какой структуре таблиц вы подумываете, но в любом случае соединение не понадобится, если у вас есть таблица потоков. Преимущество использования кеша было бы незначительным. – 2008-09-20 21:51:57
Это, вероятно, хорошее решение, хотя с моей стороны потребуется довольно большой переписать - есть много данных для извлечения (количество сообщений в потоке, ник авторов должен быть соединен с пользовательской таблицей, количеством просмотров и т. Д.). , Спасибо за предложение! – Rexxars 2008-09-20 23:39:05