©
本文档使用 PHP中文网手册 发布
(PECL memcached >= 0.1.0)
Memcached::getServerByKey — 获取一个key所映射的服务器信息
$server_key
) Memcached::getServerByKey() 返回server_key
所映射的服务器,
Memcached::*ByKey() 系列方法的中的server_key
参数, 实际上就是用来获取
操作的服务器的.(译注: 可以这样理解, *ByKey系列函数首先调用 Memcached::getServerByKey() 获取服务器,
然后在此服务器上进行操作.)
server_key
本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目,而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
如需要则使用 Memcached::getResultCode() 。
Example #1 Memcached::getServerByKey() 示例
<?php
$m = new Memcached ();
$m -> addServers (array(
array( 'mem1.domain.com' , 11211 , 40 ),
array( 'mem2.domain.com' , 11211 , 40 ),
array( 'mem3.domain.com' , 11211 , 20 ),
));
$m -> setOption ( Memcached :: OPT_LIBKETAMA_COMPATIBLE , true );
var_dump ( $m -> getServerByKey ( 'user' ));
var_dump ( $m -> getServerByKey ( 'log' ));
var_dump ( $m -> getServerByKey ( 'ip' ));
?>
以上例程的输出类似于:
array(3) { ["host"]=> string(15) "mem3.domain.com" ["port"]=> int(11211) ["weight"]=> int(20) } array(3) { ["host"]=> string(15) "mem2.domain.com" ["port"]=> int(11211) ["weight"]=> int(40) } array(3) { ["host"]=> string(15) "mem2.domain.com" ["port"]=> int(11211) ["weight"]=> int(40) }
[#1] zhaoyong dot lc at gmail dot com [2013-03-29 06:32:14]
The parameter server_key is very confusing, it's not a server key for MemCached Server, but it's key,in key-value pair which you stored in server.
<?php
$m = new Memcached;
$m->addServers(array(
array('127.0.0.1',11212),
array('127.0.0.1',11211)
));
for($i=0;$i<10;$i++){
$key = 'key_'.$i;
$m->add($key, 1);
}
for($i=0;$i<10;$i++) {
$key = 'key_'.$i;
$arr = $m->getServerByKey($key);
echo ($key.":\t".$arr['port']."\n");
}
?>
key_0: 11212
key_1: 11211
key_2: 11212
key_3: 11212
key_4: 11212
key_5: 11211
key_6: 11211
key_7: 11212
key_8: 11212
key_9: 11211