Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
一个简单的memcahe工作图解:

——> 首次访问:从RDBMS中取得数据保存到memcahed
——> 第二次后:从memcahed中取得数据显示页面
接下来我们给php里面安装memcahe扩展:
安装之前需要安装re2c这个工具,科普(re2c是书写工具非常快,非常灵活的扫描仪。不同于任何其他的工具,Re2C集中在正则表达式匹配生成高效的代码。做为一个结果,这允许比任何传统的词法分析器提供还了一个更广泛的使用范围。最后但并非最不重要的警告免费代码Re2C生成等于手工编写的代码大小,速度和质量。)
[root@vm3 mnt]# tar zxf re2c-0.13.5.tar.gz
[root@vm3 mnt]# cd re2c-0.13.5
[root@vm3 mnt]# ./configure
[root@vm3 mnt]#make
[root@vm3 mnt]# make install
[root@vm3 mnt]# tar zxf memcache-2.2.5.tgz
[root@vm3 mnt]# cd memcache-2.2.5
[root@vm3 memcache-2.2.5]# phpize #生成php扩展模块
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
[root@vm3 memcache-2.2.5]# ./configure --prefix=/usr/local/lnmp/phpmodule/memcache
[root@vm3 memcache-2.2.5]# make && make install
[root@vm3 memcache-2.2.5]# cd /usr/local/lnmp/php/etc
[root@vm3 etc]# vim php.ini
- ; ... or under UNIX:
- ;
- ; extension=msql.so
- extension=memcache.so #加上memcahe的支持
- ;
Reload service php-fpm done
然后在浏览器中输入:192.168.1.3/index.php
[root@vm3 php]# yum install memcached -y
[root@vm3 ~]# vim /etc/sysconfig/memcached
[root@vm3 ~]# /etc/init.d/memcached start
[root@vm3 ~]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 12275/php-fpm
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7753/mysqld
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 12328/memcached
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7884/nginx
tcp 0 0 :::11211 :::* LISTEN 12328/memcached
[root@vm3 memcache-2.2.5]# cp memcache.php /usr/local/lnmp/nginx/html/
[root@vm3 memcache-2.2.5]# cd /usr/local/lnmp/nginx/html/
[root@vm3 html]# vim memcache.php
- */
- $VERSION='$Id: memcache.php,v 1.2 2008/09/11 19:21:06 mikl Exp $';
- define('ADMIN_USERNAME','admin'); // Admin Username 设置我们的用户名
- define('ADMIN_PASSWORD','westos'); // Admin Password 密码
- define('DATE_FORMAT','Y/m/d H:i:s');
- define('GRAPH_SIZE',200);
- define('MAX_ITEM_DUMP',50);
- $MEMCACHE_SERVERS[] = '192.168.1.3:11211'; // add more as an array 我们所要做缓存的主机地址
- #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
我么看到以上页面表示测试成功。