memcached - что такое хороший метод для кэширования общих запросов, но также для обработки аннулирования? - PullRequest
1 голос
/ 10 мая 2010

Я понимаю необходимость такой функции, как DB_Get_Cached ("строка sql"), которая хэширует SQL для выполнения поиска в memcached на наличие данных.

function DB_Get_Cached(string SQL)
 data = memcache_get_data(md5(SQL))
 if (!data)
   return DB_Get(SQL)
 end if
end function

Что такое хорошоспособ расширить это, чтобы обработать данные недействительными или тайм-аут?

Я думаю, с точки зрения страниц продукта на сайте электронной коммерции, или сведения о пользователе в их профиле.

Спасибо

Ответы [ 2 ]

2 голосов
/ 10 мая 2010

Вы можете использовать некоторый глобальный идентификатор версии в своем ключе. Например, если у вас был этот ключ для представления данных для продукта # 1234:

data:products:1234

Добавьте идентификатор версии к ключу так:

data:1:products:1234

Затем, когда вы хотите аннулировать ваш кеш, просто увеличьте идентификатор версии. Это приведет к изменению всех ключей кеша:

data:2:products:1234
2 голосов
/ 10 мая 2010

Не кэшируйте в функции запроса, а кэшируйте везде, где вы обрабатываете результаты. Это может даже позволить вам кэшировать постобработанные запросы (например, HTML).

И в качестве ключа кэша используйте значимое имя, например «страница: меню» или «пользователь: профиль: USERID». Это позволит вам легко удалить запись в кэше, если вы хотите сделать ее недействительной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...