我的问题与 PHP Memcache 扩展的 addServer 函数中的“权重”参数有关。
在过去的几个月里,我一直在为所有服务器使用“weight = 1”。我现在正在尝试应用以下配置以最终从轮换中删除“10.10.10.3”并最大限度地减少数据丢失。
有了新的权重值,我的 PHP 客户端无法检索它曾经能够获取的键的值。如果我恢复为“weight = 1”,则可以毫无问题地获取所有键。
为了在“Memcache::addServer”中正确使用“权重”选项,是否有任何配置或任何我遗漏的东西?
感谢您的帮助。
$hosts = array(
array('ip' => '10.10.10.1', 'port' => 11211, 'weight' => 100),
array('ip' => '10.10.10.2', 'port' => 11211, 'weight' => 100),
array('ip' => '10.10.10.3', 'port' => 11211, 'weight' => 1),
array('ip' => '10.10.10.4', 'port' => 11211, 'weight' => 100),
);
$memcache = new Memcache();
foreach($hosts as $host) {
$host['port'] = isset($host['port']) ? (int) $host['port'] : 11211;
$host['weight'] = isset($host['weight']) ? (int) $host['weight'] : 1;
$memcache->addserver($host['ip'], $host['port'], false, $host['weight'], 1, 15);
}
PHP 版本= 5.3.10
Memcache PHP 变量
- memcache 支持 => 启用
- memcache.allow_failover => 1 => 1
- memcache.chunk_size => 32768 => 32768
- memcache.compress_threshold => 20000 => 20000
- memcache.default_port => 11211 => 11211
- memcache.hash_function => crc32 => crc32
- memcache.hash_strategy => 一致 => 一致
- memcache.lock_timeout => 15 => 15
- memcache.max_failover_attempts => 20 => 20
- memcache.protocol => ascii => ascii
- memcache.redundancy => 1 => 1
- memcache.session_redundancy => 2 => 2
Memcached 版本
10.10.10.1 / 10.10.10.2 / 10.10.10.3 正在运行 1.4.5
10.10.10.4 正在运行 1.4.4