1. LNMP+memcached
1.1 实验环境
node1:192.168.1.11
LNMP环境:还没有配置好LNMP环境,参考https://blog.csdn.net/m0_37868230/article/details/105965040配置环境
1.2 memcached
1.2.1 memcached定义
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
web应用都将数据保存在数据库中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,会导致数据库负担加重、数据库响应恶化、网站显示延迟等重大影响。这个时候就需要memcached通过缓存数据库查询结果、减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
1.2.2 memcached工作流程
因此每次更新mysql中数据,也会同时更新memcached中的数据,来保证一致性。且当memcached内存空间用完,会使用LRU策略和到期失效策略,替换数据。首先将失效数据替换,接下来是最近未使用数据。
1.2.3 memcached安装
yum install -y memcached.x86_64
rpm -qa | grep memcached # 查询安装的信息
rpm -ql memcached-1.4.15-10.el7_3.1.x86_64 # 查询并列出安装的包的内容
1.2.4 安装php的memcache扩展
- 获取安装包
- 解压安装包
tar zxf memcache-4.0.5.2.tgz
可以看到,当前目录下,没有编译的文件,因此这里我们需要使用phpize来生成编译文件
- 通过phpize生成编译文件【注意,这里是因为memcache是php的一个模块,才可以使用phpize来生成】
ln -s /usr/local/lnmp/php/bin/* /usr/local/bin/ # 做软链接,可以直接使用bin目录下的命令
source /etc/profile # 重新加载环境变量
phpize # 生成编译文件
yum install -y autoconf # 安装autoconf
此时,我们再次去生成编译文件,就没有问题了,我们想要的configure文件就已经生成了。结果如下:
- 编译
./configure --with-php-config=/usr/local/lnmp/php/bin/php-config # 指定php配置文件的路径
- make && make install
- 修改php配置文件,引入扩展
vim /usr/local/lnmp/php/etc/php.ini
/etc/init.d/php-fpm reload # 重启php
php -m | grep memcache # 查看是否有memcache模块
查询可以看到,模块引入成功~
1.2.5 测试
- 复制memache的php页面
cp example.php memcache.php /usr/local/lnmp/nginx/html/ # 复制php文件到html下
vim /usr/local/lnmp/nginx/html/memcache.php # 编辑memcache.php
- 启动memcached服务
- 浏览器访问
- 测试速率优化
yum install -y httpd-tools-2.4.6-88.el7.x86_64 # 安装ab工具所在的包
ab -c 10 -n 3000 http://192.168.1.11/index.php
# 10个并发3000次请求访问http://192.168.1.11/index.php[没有经过memcache缓存,看一下缓存速率有多快]
ab -c 10 -n 3000 http://192.168.1.11/example.php
# 10个并发3000次请求访问http://192.168.1.11/example.php[经过memcache缓存,看一下缓存速率有多快]
可以看到,memcached缓存的没有失败的请求,且处理速率高[处理请求多,因此直观看上去貌似是前者快,但实际处理请求越多时差距越明显]~