我已使用以下代码向我的网络应用添加了两个memcached服务器:
$servers = array(
array('xxx.xxx.xxx.185', 11211),
array('xxx.xxx.xxx.10', 11211)
);
global $m;
$m = new Memcached('persistant-id');
if (0 == count($m->getServerList())) {
error_log("add memcache servers num: " . count($m->getServerList()));
return $m->addServers($servers);
}
我想将键/值添加到特定服务器。 如何将特定密钥添加到xxx.xxx.xxx.185服务器?
我想在网上找到addByKey($serverKey, $key, $value, $expiration = null)
,但我找不到$ serverKey。
任何帮助?
答案 0 :(得分:1)
我不认为你可以通过ip选择一个特定的服务器来存储使用池连接的数据(我可能是错的,但没有看到任何相反的东西)。这是我对* ByKey()函数的理解,$serverKey
只是您可以分配的任意分组。您没有选择存储数据的服务器,只是指定您希望添加了$serverKey
的所有项目最终都在同一台服务器上。
我知道保证数据在特定服务器上结束的唯一确定的方法是创建连接并仅将数据添加到该特定服务器。
一个不太理想的替代建议我可以想到尝试(我不知道它是否可行,并且纯粹是一个假设),将创建一个仅与xxx.185
服务器的连接,添加一个使用您想要的$serverKey
项,然后创建池连接,使用相同的$serverKey
添加一堆项目,然后使用getServerByKey()
方法查看您添加的所有数据是否全部最终在同一台服务器上。
如果是这样,您只需要使用您使用的所有$serverKey
种子服务器。
如果两个服务器都显示,则$serverKey
可能特定于连接,而不是可用的数据集。
但这不是一个理想的解决方案,特别是对于memcached数据的波动性,如果这种方法起作用的话(就像我说过的,从未尝试过,它纯粹是猜测)。每次memcached重新启动时,您都必须重新设置服务器种子,或者为了更多空间而丢弃所有带有$serverKey
的数据
希望有所帮助