Memcached安装使用分享

Memcached是什么:

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。

eAccelerator和 memcached 是目前较为主流的两个可使用在PHP之中的缓存加速工具,以下为Memcached与eAccelerator 的区别:

eAccelerator作为PHP的扩展库存在,那么仅在PHP运行时,可以操作和读写共享内存,一般情况,只能由操作共享内存的程序自己调用。同时,eAccelerator 可以缓存PHP程序的执行代码,提升程序的调入和执行速度。

Memcached 主要作为一个共享内存服务器,其PHP扩展库仅仅作为PHP到 memcached 的连接库存在,类似MySQL扩展库.因而,Memcached 可以完全脱离PHP,其共享的数据,可以被不同的程序调用.

eAccelerator 主要用于单机PHP提速,缓存中间数据.对于实时性高,但数据操作量小的情况下;Memcache用于分布式或者集群系统,多台服务器可以共享数据.对于实时性高,同时数据操作量大的情况。

周末在张宴的博客上看到那么一句话“使用PHP的XCache、APC等加速模块会提供速度10倍左右,降低系统负载50倍以上”,于是我安装了Memcached 。

1、先安装libevent ,一般操作系统上有带,我的就是。

你可以使用以下语句查询:

ls -al /usr/lib | grep libevent

出现以下便说明已安装好的了。

2、安装 Memcached,因为我之前安装的是 LNMP 一键包,软件是已下载好的了。

cd lnmp0.8
./memcached.sh

如果你不知道自己的系统有木有的话,可用

yum search memcached

寻找。

3、安装 PHP 的 Memcached 模块

cd lnmp0.8
cd memcache-3.0.6
/usr/local/php/bin/phpize
./configure –enable-memcache-with-php-config=/usr/local/php/bin/php-config -with-zlib-dir
make
make install

手动编译就是麻烦,如果不知道phpize在什么位置,可以用

 find / -name phpize

查找

记录下安装成功后的提示,类似于:

Installing shared extensions: /usr/lib/php/extensions/.../

把这个地址记录下来,修改php.ini文件。

 vi /usr/local/php/etc/php.ini

在Zend Optimize 前面加上

extension_dir = "/usr/local/php/lib/php/extensions/...../"
extension=memcache.so

最后验证一下是否安装完成

 php -m|grep memcache

应该会显示 memcache, 如果出现类似的错误:

 PHP Warning: Module ‘memcache’ already loaded in Unknown on line 0

那可以把上面在php.ini 增加的那两句话删去。

当然,你还可以使用 phpinfo.php 查看 Memcached 模块是不是已被安装,显示如下:

4、启动 Memcached,你的安装地址可能不同,输入以下命令:

 usr/local/memcached/bin/memcached -d -m 16 -p 11211 -l 127.0.0.1 -u root -c 256

-d:启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB(对于我的网站,16M即可)
-u:运行Memcache的用户
-l:监听的服务器IP地址
-p:设置Memcache监听的端口,默认是11211注:-p(p为小写)
-c:设置最大并发连接数,默认是1024
-P:设置保存Memcache的pid文件注:-P(P为大写)
-h 显示帮助

5、1)测试是否安装成功

netstat -tap | grep memcached

查看是否已运行

2)你还可运行下面的 php 文件,如果有输出 This is a test!,就表示环境搭建成功。

< ?php $mem = new Memcache; $mem->connect("127.0.0.1", 11211);
$mem->set('key', 'This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>

3)还可以根据访问http://你的域名/memcached.php 看看是否出现以下内容:

Memcached Server version: 1.4.7
Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value:

4)使用命令

 telnet 127.0.0.1 11211

对Memcached缓存服务的状态查询,可以先telnet连接上服务:telnet 127.0.0.1 11211 ,然后使用 stats命令查看缓存服务的状态,会返回如下的数据:

time: 1255537291 (服务器当前的unix时间戳)
total_items: 54 (从服务器启动以后存储的items总数量 )
connection_structures: 19 (服务器分配的连接构造数)
version: 1.2.6 (Memcache版本)
limit_maxbytes: 67108864 (分配给memcache的内存大小字节)
cmd_get: 1645 (get命令(获取)总请求次数)
evictions: 0 (为获取空闲内存而删除的items数)
total_connections: 19 (从服务器启动以后曾经打开过的连接数)
bytes: 248723 (当前服务器存储items占用的字节数)
threads: 1 (当前线程数)
get_misses: 82 (总未命中次数)
pointer_size: 32 (当前操作系统的指针大小(32位系统一般是32bit)
bytes_read: 490982 总读取字节数(请求字节数)
uptime: 161 (服务器已经运行的秒数)
curr_connections: 18 (当前打开着的连接数)
pid: 2816 (memcache服务器的进程ID )
bytes_written: 16517259 总发送字节数(结果字节数)
get_hits: 1563 (总命中次数)
cmd_set: 54 (set命令(保存)总请求次数)
curr_items: 28 (服务器当前存储的items数量)

安装好 memcached 后,我唯一的问题就是无法显示图形界面监控图。我折腾了两天都弄不好,就没有再去弄了。

加入对话

4条评论

  1. 自己玩VPS,很不错。我都没折腾过这东西。看了你的介绍,是我见过写得最长的,也是色彩最丰富的一篇。所以很容易记住~

留下评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据