我正在使用 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");
如果我这样做,它会将数据保存在内存缓存中,这对于唯一值来说是可以的,但在其他情况下它将多次存储数据,这会浪费缓存中的空间。
所以我基本上想要的是 wads1 和 wads2 指向 memcache 中的相同数据。
最佳答案
不,没有本地方法可以使 memcached 在键之间共享对象。
如果您确实需要实现这样的事情,您可以自己实现这样的解决方法。例如,假设键 hello
映射到对象 world
。
您可以这样做,以便在您的代码库中,任何具有值 {'alias': N}
的键都会使您的代码对键 N 执行 memcached 查找。因此在这种情况下,您只需按如下方式存储数据:
你好
-> 世界
hello2
-> {'alias': 'hello'}
hello3
-> {'alias': 'hello'}
不过,这可能是代码中的一个不好的模式;如果您始终首先引用指向您想要的数据的键(并且每次都会节省额外的 memcached 命中),那么它会更干净,更容易维护。
关于php - 两个key可以指向memcache中的同一个数据吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18055529/