memcached - PHP使用memcache权重和一致性哈希无效
本文介绍了memcached - PHP使用memcache权重和一致性哈希无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
php调用memcahe的权重无效
PHP使用Memcached的扩展addServers使用权重,但是结果还是1:1,权重10:0,请问是什么原因呢?
<?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');
}
解决方案
结论:
1 权重只有在使用一致性哈希的时候才有效
2 一致性哈希的时候必须使用OPT_LIBKETAMA_COMPATIBLE
*疑问:两个参数必须同时才能生效,为什么要做成2个呢?
这篇关于memcached - PHP使用memcache权重和一致性哈希无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文