D.H.Q的烂笔头

Just code for fun~

Ubuntu 12.04 LTS下memcache的安装使用

Memcache 是一个免费、开源、高性能的分布式内存对象缓存系统。它把WEB应用程序所需的数据以Key-Value的形式存储在内存中,提高了WEB应用程序数据的读取速度,减轻了数据库的负载,从而加速动态WEB应用程序的响应速度。

安装memcached服务端:

apt-get install memcached

启动memcache:

memcached -d -m 50 -p 11211 -u memcache -l 127.0.0.1

关闭memcache:

kill -9 memcache的进程ID

常用memcache启动参数介绍:

-d:以daemon的方式在后台启动运行一个守护进程
-m:分配给Memcache使用的最大内存数量,单位是MB,默认是64MB
-u:设定运行Memcache的用户(memcache默认不允许以root用户登录)
-l:监听的服务器IP地址
-p:设置Memcache监听的TCP端口,默认是11211(p为小写)
-c:设置最大并发连接数,默认是1024
-P:设置保存Memcache的pid文件路径(P为大写)
-h:显示帮助

安装完毕后,可以用这个命令来检测memcache是否正常启动,如果看到如上启动memcache的指令,则安装成功:

ps aux | grep memcache

安装PHP Memecache 客户端:

apt-get install php5-memcache php5-memcached

执行完后重启nginx和fastcgi服务,phpinfo()输出能看见memcache扩展,则PHP Memcache客户端安装成功。

修改PHP配置文件php.ini,用memcache存储session会话,加快数据之间处理速度:

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

也可以修改 .htaccess 文件:

php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"

或者在某个应用中初始设置:

ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");

使用多个 Memcached Server 时要用逗号","隔开,并且可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等,例如:

tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2

一个简单的php memcahche使用例子:

//创建Memcache对象
$mem = new Memcache();
//连接Memcache服务器
$mem->connect('127.0.0.1', 11211);
$val = 'This is a memcache test!';
$key = md5($val);
//判断是否获取到指定key的数据,没缓存则增加一条过期时间为300秒的数据
if ( $data = $mem->get($key) )
{
    echo 'from cache data: ' . $data;
}
else
{
    $mem->set($key, $val, 0, 300);
    echo 'new set data: ' . $val;
}

更多的使用介绍可以查看PHP官方的memecache文档

comments powered by Disqus
返回顶部