http://blog.phpha.com/archives/1303.html
一般使用
<?php
/**
* Memcached常规应用演示
* 天涯PHP博客
* http://blog.phpha.com
*/
$mc = new Memcache();
$mc->conncet('127.0.0.1', 11211);
$sql = sprintf("SELECT * FROM users WHERE uid = %d", $_GET['uid']);
$key = md5($sql);
//检测结果是否已经被缓存
if( ! $data = $mc->get($key)){
//没有缓存则直接从数据库读取
mysql_conncet('localhost', 'test', 'test');
mysql_select_db('test');
while($row = mysql_fetch_object(mysql_query($sql))){
$data[] = $row;
}
//并将查询结果缓存
$mc->add($key, $data);
}
var_dump($data);
分布式使用--使用算法
<?php
/**
* 普通Hash分布
* 天涯PHP博客
* http://blog.phpha.com
*/
//Hash函数
function mHash($key){
$md5 = substr(md5($key), 0, 8);
$seed = 31;
$hash = 0;
for($i = 0; $i < 8; $i++){
$hash = $hash * $seed + ord($md5{$i});
$i++;
}
return $hash & 0x7FFFFFFF;
}
//假设有2台Memcached服务器
$servers = array(
array('host' => '192.168.1.108', 'port' => 11211),
array('host' => '192.168.1.107', 'port' => 11211),
array('host' => '192.168.1.110', 'port' => 11211)
);
$key = 'MyBlog';
$value = 'http://blog.phpha.com';
$sc = $servers[mHash($key) % 3];
$memcached = new Memcached($sc);
$memcached->set($key, $value);
?>
分布式使用---一致性hash
(代码有点多还是看原文博客吧)
------------------------
关于SESSION保存到memeche 上
参见原文:
http://blog.phpha.com/archives/1553.html