2

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

$datawallright = $memcache->get('wads'.$wall->getIdwall());

这就是我检索数据的方式。如果没有数据,我会进行一些 MySql 查询,这需要时间。大多数时候,关键点指向独特的数据。问题是有时我希望更多的键指向相同的数据。

$memcache->set('wads'.$wall->getIdwall(), $datawallright, false, 3600) or die ("Failed to save data at the server");

如果我这样做,它会将数据保存在 memcache 中,这对于唯一值是可以的,但在另一种情况下它将多次存储数据,这会浪费缓存中的空间。

所以我最想要的是 wads1 和 wads2 指向内存缓存中的相同数据。

4

1 回答 1

2

不,没有本地方法可以让 memcached 在键之间共享对象。

如果你真的需要实现这样的事情,你可以自己实现这样的解决方法。例如,假设 keyhello映射到 object world

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

hello->world

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

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

不过,这可能是您的代码中存在的错误模式;如果您总是首先引用指向您想要的数据的键(并且每次都会节省额外的 memcached 命中),那么它会更清洁和更容易维护。

于 2013-08-05T18:51:21.177 回答