两个键是否可以指向Memcache中的相同数据
我使用的是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指向内存缓存中的相同数据。
解决方案
否,没有本机方法使Memcached在键之间共享对象。
如果您确实需要实现这样的事情,那么您可以自己实现这样的变通方法。例如,假设键hello
映射到对象world
。
您可以这样做,以便在您的代码库中,任何具有for值{'alias': N}
的键都将使您的代码执行键N的Memcached查找。因此,在本例中,您只需按如下方式存储数据:
hello
->world
hello2
->{'alias': 'hello'}
hello3
->{'alias': 'hello'}
这可能是您的代码中不好的模式;如果您首先只引用指向您想要的数据的键,它会更干净、更易于维护(而且每次都会保存一个额外的Memcached命中)。
相关文章