2011-12-13 55 views
1

我使用Memcached來存儲一些PHP對象 - 可以說我的對象是一罐蘇打水。現在,我爲百事可樂的memcached密鑰是4.因此,當我得到'soda_4'時,我得到了百事可樂的物體。重複的memcached對象

問題是,有時我知道我需要百事可樂,但我沒有ID。所以我需要在獲取memcached對象之前進行數據庫調用來獲取ID。這似乎效率低下。

什麼是完美的是,如果我可以通過2個鍵引用相同的對象(每次我保存對象我有ID和名稱)。

此時我正在考慮每次保存2份。

有什麼建議嗎?

+0

你爲什麼使用數字4?爲什麼不使用一個名爲soda_pepsi的密鑰? – Julien

+0

讓我們只說它已經構建到系統中的效率決策。 – therealsix

+0

我在想,我想要的可能是不可能的(使用> 1 memcached服務器),因爲密鑰決定了你的地址 - 因此,1個對象不能有2個密鑰,將它放在2臺不同的服務器上。 – therealsix

回答

2

方法A: -

  1. 使用兩個緩存
  2. 密鑰A = 「名稱」=> 「ID」(百事可樂=> 4)
  3. 密鑰B =「ID(細節百事)

所以,你可以參照B鍵,當你有對象的名稱。
的缺點是你必須做出兩次調用。

方法B

您已經提到,創建使用的名稱和ID鍵二級緩存。
缺點是你正在複製數據。
因此,memcache的容量將減少50%。

我寧願你的建議,但