PHP и APC: один объект в кеше с несколькими ключами? - PullRequest
1 голос
/ 01 февраля 2010

Я реализую объектное кэширование в приложении PHP с использованием APC.

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

В других ситуациях у меня будет идентификатор пользователя, и я хочу выбрать его исходя из этого.

Каждый раз, когда я выбираю пользователя, я хотел бы добавить объект в кеш.

Допустим, я поместил его туда один раз с ключом "User.user_id.123" и один раз с "User.user_name.JoeSmith".

Это, однако, означает, что я просто поместил один и тот же объект в кэш дважды, верно? Это не кажется таким эффективным.

Есть ли способ поместить один объект в кэш APC с несколькими ключами, чтобы найти его позже?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2011

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

0 голосов
/ 01 февраля 2010

Вы можете поместить идентификатор пользователя в кеш, например User.user_name.JoeSmith=123.

Но я сомневаюсь в эффективности хранения этих значений в кеше. Это, безусловно, ускорит работу во время выполнения, но может привести к нескольким проблемам во время разработки (поскольку вы в основном храните одни и те же значения дважды, один раз в базе данных и один раз в кэше). Некоторые вещи, которые сразу же приходят мне на ум:

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