Как избежать дублирования копий объекта в кеше?
Вопрос
Я использую memcache для разработки кеша для уровня модели веб-приложения. Одна из моих самых больших проблем — согласованность данных.Мне пришло в голову кэшировать данные следующим образом:(Key = Query, значение = список идентификаторов объекта, результат запроса) для каждого идентификатора списка:(ключ=object.id, значение=объект)
Итак, каждый раз, когда выполняется запрос:Если запрос уже существует, я извлекаю объекты, указанные в списке, из кэша.Если это не так, все объекты списков сохраняются в кеше, заменяя любое другое старое значение.
Кто-нибудь использовал эту альтернативу, это бог?есть еще идеи?
Решение
Кэширование — одна из тех тем, на которую нет единственного правильного ответа — это зависит от вашего домена.
Описываемая вами политика кэширования может быть достаточной для вашего домена.Однако, похоже, вас не беспокоят устаревшие данные.Часто я ожидал увидеть метку времени для некоторых объектов — если кешированное значение старше, чем какой-либо параметр, определенный системой, тогда оно будет считаться устаревшим и будет получено повторно.
Дополнительную информацию об алгоритмах кэширования см. Википедия (для начинающих)
Другие советы
Добро пожаловать в мир параллельного программирования.Вам захочется узнать немного о взаимное исключение.Если вы сообщите нам, для какого языка/платформы вы разрабатываете, мы сможем более подробно описать ваши варианты.