Дублирующиеся объекты memcached - PullRequest
1 голос
/ 13 декабря 2011

Я использую Memcached для хранения некоторых объектов PHP - скажем, мой объект - это банка содовой. Прямо сейчас мой memcached ключ для Pepsi равен 4. Поэтому, когда я получаю 'soda_4', я получаю объект Pepsi.

Проблема в том, что иногда я знаю, что мне нужна Пепси, но у меня нет идентификатора. Поэтому мне нужно сделать вызов БД, чтобы получить идентификатор, прежде чем я смогу получить объект memcached. Это кажется неэффективным.

Что было бы идеально, если бы я мог ссылаться на один и тот же объект двумя ключами (каждый раз, когда я сохраняю объект, у меня есть и идентификатор, и имя).

На данный момент я рассматриваю возможность сохранения 2 копий каждый раз.

Есть предложения?

1 Ответ

2 голосов
/ 13 декабря 2011

Метод A: -

  1. с использованием двух кэшей
  2. ключ A = "name" => "id" (pepsi => 4)
  3. ключ B = "id (подробности о pepsi)

Таким образом, вы можете ссылаться на клавишу B, когда у вас есть имя объекта.
Недостатком является то, что вы должны сделать два вызова.

Метод B

Вы уже упоминали, создайте два кэша, используя имя и идентификатор в качестве ключа.
Недостаток - вы дублируете данные.
Итак, емкость memcache уменьшится на 50%.

Я бы предпочел ваше предложение, однако

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