很多大负载站点采用了memcache作缓存服务,以分担数据库服务器的压力。
本文只介绍在ubuntu下如何配置memcache和如何在php使用memecache,对于更深入的了解,比如memcache的运作机理或更高级的应用还是google下。
关于memcache与memcached
memcache是项目名,memcached是服务名。让很多初接触的人感觉很是莫名其妙。个人认为正确的应该是用前者用更为正确一点。
安装memcache
memcache分为两部分,memcache服务端和客户端。memcache服务端是作为服务来运行的,所有数据缓存的建立,存储,删除实际上都是在这里完成的。客户端,在这里我们指的是php的可以调用的扩展。
1)安装memcache服务端
安装完memcache服务端以后,我们需要启动该服务:
memcached服务的启动参数:
sudo apt-get install php5-memcache
安装完以后我们需要在php.ini里进行简单的配置,打开/etc/php5/apache2/php.ini文件在末尾添加如下内容:
[memcache]
; 一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,
; 它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
; 是否在遇到错误时透明地向其他服务器进行故障转移。
memcache.allow_failover = on
; 接受和发送数据时最多尝试多少个服务器,只在打开memcache.allow_failover时有效。memcache.max_failover_attempts = 20
; 数据将按照此值设定的块大小进行转移。此值越小所需的额外网络传输越多。
; 如果发现无法解释的速度降低,可以尝试将此值增加到32768。
memcache.chunk_size = 8192
; 连接到memcached服务器时使用的默认tcp端口。
memcache.default_port = 11111
; 控制将key映射到server的策略。默认值”standard”表示使用先前版本的老hash策略。
; 设为”consistent”可以允许在连接池中添加/删除服务器时不必重新计算key与server之间的映射关系。
;memcache.hash_strategy = “standard”; 控制将key映射到server的散列函数。默认值”crc32″使用crc32算法,而”fnv”则表示使用fnv-1a算法。
; fnv-1a比crc32速度稍低,但是散列效果更好。
;memcache.hash_function = “crc32″
保存php.ini,执行sudo /etc/init.d/apache2 restart重启apache。
在php中使用memcache
<?php
$mem = new memcache; //创建memcache对象
$mem->connect(”127.0.0.1″, 11111); //连接memcache服务器
$val = “这是一个memcache的测试.”;
$key = md5($val);
$mem->set($key, $val, 0, 120); //增加插入一条缓存,缓存时间为120s
if(($k = $mem->get(’key’))){ //判断是否获取到指定的key
echo ‘from cache:’.$k;
} else {
echo ‘normal’; //这里我们在实际使用中就需要替换成查询数据库并创建缓存.
}
?>
对于key,通常用md5 查询语句来获取,在实际使用中根据具体需要来决定好了。
完成了memcache的配置和基本使用。
php5-memcache扩展提供的方法