Php 两个键可以指向memcache中的相同数据吗

Php 两个键可以指向memcache中的相同数据吗,php,memcached,key,Php,Memcached,Key,我正在使用PHP和Memcache。我希望多个键指向相同的数据 $datawallright = $memcache->get('wads'.$wall->getIdwall()); $memcache->set('wads'.$wall->getIdwall(), $datawallright, false, 3600) or die ("Failed to save data at the server"); 这就是我检索数据的方式。如果没有数据,我会进行一些My

我正在使用PHP和Memcache。我希望多个键指向相同的数据

$datawallright = $memcache->get('wads'.$wall->getIdwall());
$memcache->set('wads'.$wall->getIdwall(), $datawallright, false, 3600) or die ("Failed to save data at the server");
这就是我检索数据的方式。如果没有数据,我会进行一些MySql查询,这需要时间。大多数情况下,关键点都指向唯一的数据。问题是,有时我希望更多的键指向相同的数据

$datawallright = $memcache->get('wads'.$wall->getIdwall());
$memcache->set('wads'.$wall->getIdwall(), $datawallright, false, 3600) or die ("Failed to save data at the server");
如果我这样做,它会将数据保存在memcache中,这对于唯一值来说是可以的,但在另一种情况下,它会将数据存储多次,这会浪费缓存中的空间


因此,我希望wads1和wads2指向memcache中的相同数据。

不,没有本机方法使memcached在键之间共享对象

如果您真的需要实现这样的事情,您可以自己实现这样的解决方案。例如,假设键
hello
映射到对象
world

您可以这样做,在您的代码库中,任何具有for value
{'alias':N}
的键都将使您的代码对键N执行memcached查找。因此,在本例中,您只需按如下方式存储数据:

hello
->
world

hello2
->
{'alias':'hello'}

hello3
->
{'alias':'hello'}

不过,这可能是代码中的一个糟糕模式;如果您总是首先引用指向所需数据的键(并且每次都会保存一个额外的memcached命中),那么它将更干净、更易于维护