每个服务器都由自己处理并发的机制;
apache 是 路处理模块(MPM);
mysql 是 多线程机制。
缓存算法:LRU,最近最少使用的缓存删除
开启 2 个 memcache 服务
总结:
1. mem服务的数据不是同步, 数据是分布的
2. 把什么数据放入到哪个memcached是由客户端的mem对象决定
3. 当执行addServer的时候,并不是立即去连接mem服务,而是通过计算,hash后才去决定连接哪个mem服务,因此当你大量加入服务器到连接池,没有多余开销
mem4.php
<?php
//我的电脑有 2 个 memcache 服务
$mc = new Memcache();
$mc->addserver('127.0.0.1',11211);
$mc->addserver('127.0.0.1',9999);
//这里注意:加到哪个服务器(11211,9999),它自己有个分布算法
if($mc->add('key6','hahaha',MEMCACHE_COMPRESSED,200)){
echo 'add ok';
}else{
echo 'add faild';
}
if($mc->add('key7','hahaha7',MEMCACHE_COMPRESSED,200)){
echo 'add ok';
}else{
echo 'add faild';
}
if($mc->add('key8','hahaha8',MEMCACHE_COMPRESSED,200)){
echo 'add ok';
}else{
echo 'add faild';
}
if($mc->add('key9','hahaha9',MEMCACHE_COMPRESSED,200)){
echo 'add ok';
}else{
echo 'add faild';
}
mem5.php
<?php
//如何从多个 memcache 中取出值
$mc = new Memcache();
//只要保证把 memcache 服务添加到连接池,就可以取到
//如果有很多连接,并不会都启用,用到时才会启用
$mc->addserver('127.0.0.1',11211);
$mc->addserver('127.0.0.1',9999);
$val = $mc->get('key6');
var_dump($val);