2011-12-13 50 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%。

我宁愿你的建议,但