1、Memcache简介
Memcache是一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著 。这是一套开源代码软件,以BSD license授权发布。
工作原理:
先检查客户端的请求数据是否在Memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在Memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到Memcached中(Memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给Memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端连接和操作。
2、下载及安装
在下载memcache时需要注意,memcache是PHP中的插件而memcached是memcache的主程序。
官方下载地址:https://memcached.org/downloads
PHP中的搭建:官方文档连接,https://www.php.net/manual/zh/memcached.setup.php
解压安装:
##解压并安装
### 1 因为没有configer编译文件,使用phpize编译
[root@servera memcache-4.0.5.2]# /usr/local/bin/phpize
Configuring for:
PHP Api Version: 20190902
Zend Module Api No: 20190902
Zend Extension Api No: 320190902
### 2 源码安装三部曲
[root@servera memcache-4.0.5.2]# ./configure --with-php-config=/usr/local/lnmp/php/bin/php-config
[root@servera memcache-4.0.5.2]# make && make install
### 3 安装OpenSSL插件
[root@servera openssl]# phpize
[root@servera openssl]# ./configure --with-php-config=/usr/local/lnmp/php/bin/php-config --with-openssl
....
[root@servera openssl]# make && make install
因为memcache插件中无编译文件,所以通过phpize进行编译,产生编译文件。
![](https://img-blog.csdnimg.cn/20200520134307233.png)
PHP插件均可通过phpize进行编译:
编译openssl插件:
![](https://img-blog.csdnimg.cn/20200520135107904.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMDU2MjI0,size_16,color_FFFFFF,t_70)
【说明】 若无phpize命令,可查看安装的PHP编译文件是否进行了全局变量连接:ln -s /usr/local/lnmp/php/bin/* /usr/local/bin/,连接后刷新全局变量配置: source /etc/profile即可使用。
3、搭建到LNMP架构中
3.1 配置memcache插件到PHP的配置中
##编译PHP模块扩展文件
###编辑配置文件内容:
....
761 extension_dir = /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20190902/
....
914 extension=openssl.so
915 extension=memcache.so
....
### 配置完成,重新加载
[root@servera openssl]# /etc/init.d/php-fpm reload
Reload service php-fpm done
![](https://img-blog.csdnimg.cn/20200520140433775.png)
![](https://img-blog.csdnimg.cn/20200520140602166.png)
3.2 配置memcached服务
### 配置 memcache的服务
### 1 安装memcached服务
[root@servera no-debug-non-zts-20190902]# yum install -y memcached ##yum仓库中有,可直接安装
[root@servera ~ ]# systemctl start memcahed.service ##启动memcache服务
### 2 安装测试软件
[root@servera openssl]# yum install -y telnet
[root@servera openssl]# telnet localhost 11211
....
set name 0 0 6 (设置name:命令 测试主机 编号 缓存时间<单位为S> 字符大小)
...
get name (查看name)
...
delete name (删除name)
安装完成后,启动memcache服务。
![](https://img-blog.csdnimg.cn/20200520141016492.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMDU2MjI0,size_16,color_FFFFFF,t_70)
使用telnet进行测试:
![](https://img-blog.csdnimg.cn/20200520141504504.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMDU2MjI0,size_16,color_FFFFFF,t_70)
3.3 测试memcache的缓存功能
##配置memcache的缓存测试
[root@servera memcache-4.0.5.2]# pwd
/opt/rpms/memcache-4.0.5.2
[root@servera memcache-4.0.5.2]# cp memcache.php example.php /usr/local/lnmp/nginx/html/
##复制测试页和图形监控页面到Nginx的目录下
[root@servera memcache-4.0.5.2]# vim /usr/local/lnmp/nginx/html/memcache.php
... ##编辑配置文件
21
22 define('ADMIN_USERNAME','memcache'); // Admin Username
23 define('ADMIN_PASSWORD','linux'); // Admin Password ##设置密码
24 define('DATE_FORMAT','Y/m/d H:i:s');
25 define('GRAPH_SIZE',200);
26 define('MAX_ITEM_DUMP',50);
...
30 $MEMCACHE_SERVERS[] = '192.168.1.120:11211'; // add more as an array
##设置访问目标
...
![](https://img-blog.csdnimg.cn/20200520143338975.png)
![](https://img-blog.csdnimg.cn/20200520143628869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMDU2MjI0,size_16,color_FFFFFF,t_70)
结果测试:
![](https://img-blog.csdnimg.cn/20200520143957393.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMDU2MjI0,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200520144037725.png)
随着测试页面访问次数的增多,hits和misess的比例逐渐增加。
进行并发访问测试:
![](https://img-blog.csdnimg.cn/20200520145442125.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMDU2MjI0,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/2020052014554650.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMDU2MjI0,size_16,color_FFFFFF,t_70)
更多详情配置,参考博客:https://www.cnblogs.com/lpfuture/p/5800042.html,http://tengine.taobao.org/book/chapter_5.html。
参考资料:百度百科