>  기사  >  백엔드 개발  >  memcached - Memcache 가중치와 일관된 해싱을 사용하는 PHP가 작동하지 않습니다.

memcached - Memcache 가중치와 일관된 해싱을 사용하는 PHP가 작동하지 않습니다.

WBOY
WBOY원래의
2016-08-04 09:19:241536검색

memcahe를 호출하는 PHP의 가중치가 유효하지 않습니다

<code>PHP使用Memcached的扩展addServers使用权重,但是结果还是1:1,权重10:0,请问是什么原因呢?  
</code>
<code><?php
/**
 * 测试memcache一致性hash
 * 使用docker运行
 *
 * docker pull memcached
 * docker stop memcache-01
 * docker stop memcache-02
 * docker rm memcache-01
 * docker rm memcache-02
 * docker run --name memcache-01 -p 11201:11211 -d memcached
 * docker run --name memcache-02 -p 11202:11211 -d memcached
 */
$mem = new Memcached;
$mem->addServers(
    [
//        ['192.168.33.4',11201,10],
        ['192.168.33.4',11202,0]
    ]
);
//$mem->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
//$mem->setOption(Memcached::OPT_HASH, Memcached::HASH_MD5);
for($i=0;$i<10000;$i++){
    $key = md5(uniqid($i.'_'));
    $mem->add($key,'1');
}
</code>

답글 내용:

memcahe를 호출하는 PHP의 가중치가 유효하지 않습니다

<code>PHP使用Memcached的扩展addServers使用权重,但是结果还是1:1,权重10:0,请问是什么原因呢?  
</code>
<code><?php
/**
 * 测试memcache一致性hash
 * 使用docker运行
 *
 * docker pull memcached
 * docker stop memcache-01
 * docker stop memcache-02
 * docker rm memcache-01
 * docker rm memcache-02
 * docker run --name memcache-01 -p 11201:11211 -d memcached
 * docker run --name memcache-02 -p 11202:11211 -d memcached
 */
$mem = new Memcached;
$mem->addServers(
    [
//        ['192.168.33.4',11201,10],
        ['192.168.33.4',11202,0]
    ]
);
//$mem->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
//$mem->setOption(Memcached::OPT_HASH, Memcached::HASH_MD5);
for($i=0;$i<10000;$i++){
    $key = md5(uniqid($i.'_'));
    $mem->add($key,'1');
}
</code>

  • 결론:

  • 1개의 가중치는 일관된 해싱을 사용할 때만 유효합니다.

  • 2 OPT_LIBKETAMA_COMPATIBLE은 일관된 해싱을 위해 사용해야 합니다
    *

  • 질문: 두 매개변수는 동시에 유효해야 하는데 왜 매개변수가 2여야 합니까?

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.