Memcache 对PHP页面的缓存及优化

一、基础概念

1.什么是memcache?
  • Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
  • Memcached是以LiveJournal旗下Danga Interactive公司的BradFitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
  • Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
  • Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。
  • 本质上,它是一个简洁的key-value存储系统。
  • 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。(对于频繁读取,每次读取重复率高,数据更新频度低的数据,用memcache可以优化你的系统响应速度。)
    在这里插入图片描述
    memcache使用场景
  • 访问频繁的字典数据
  • 大量的hot数据
  • 页面缓存
  • 频繁的查询条件和结果
  • 临时处理的数据

Memcache和memcached的区别

  • Memcache是这个项目的名称
  • 而memcached是它服务器端的主程序文件名。

搭建步骤:

1.获得软件包资源,解压
在这里插入图片描述

[root@server1 lnmp]# tar xf memcache-2.2.5.tgz
[root@server1 lnmp]# ls		#会发现生成目录

在这里插入图片描述

2.进入目录,查看(#会发现没有./configure的编译环境)
在这里插入图片描述
3.设定环境变量,创建编译环境

[root@server1 memcache-2.2.5]# vim ~/.bash_profile
10 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
[root@server1 memcache-2.2.5]# source ~/.bash_profile
[root@server1 memcache-2.2.5]# phpize	#可以用来试探当前的环境,从而生成./configure
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@server1 memcache-2.2.5]# ls	#可以看见有./configure编译环境存在

在这里插入图片描述

  • phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块,可以使用phpize。
  • phpize工具是在php安装目录下,基于这点phpize对应了当时的php环境,所以是要根据该php的配置情况生成对应的configure文件,建立一个configure文件。必须在一个目录下去运行phpize,那么phpize就知道你的的环境是哪个目录,并且configure文件建立在该目录下。

4.进行memcacahe的编译,安装

[root@server1 memcache-2.2.5]# ./configure		#会生成config.h

在这里插入图片描述

[root@server1 memcache-2.2.5]# make && make install

注意:会生成/usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20131226/目录
在这里插入图片描述

5.查看目录里的内容
在这里插入图片描述
6.修改php配置文件(让php和memcache建立连接)

[root@server1 memcache-2.2.5]# vim /usr/local/lnmp/php/etc/php.ini
873    extension=memcache.so
[root@server1 memcache-2.2.5]# /etc/init.d/php-fpm reload
Reload service php-fpm  done

7.安装memcached(可以让本机识别) #是一个守护进程(让可以访问本机的11211)

[root@server1 memcache-2.2.5]# yum install memcached -y
[root@server1 memcache-2.2.5]# cat /etc/sysconfig/memcached #可以查看他的监控信息
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
[root@server1 memcache-2.2.5]# /etc/init.d/memcached start

8.安装telnet工具

[root@server1 memcache-2.2.5]# yum install telnet -y
[root@server1 memcache-2.2.5]# telnet localhost 11211
stats #查看状态
set name 0 0 6	#设置key-value存储 	KEY值, 序号 缓存时间  VALUE值长度
westos
get name	#查看

在这里插入图片描述

9.将memcache的发布页复制到nginx的发布目录下

[root@server1 memcache-2.2.5]# cp memcache.php example.php /usr/local/lnmp/nginx/html/

在这里插入图片描述

10.编写文件内容
在这里插入图片描述

[root@server1 html]# vim memcache.php
23 define('ADMIN_PASSWORD','westos');      // Admin Password
28 $MEMCACHE_SERVERS[] = '172.25.254.1:11211'; // add more as an array
29 #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

测试:

浏览器输入172.25.254.1/memcache.php
在这里插入图片描述

在这里插入图片描述

进行压力测试:

ab是用来压力测试的 -c表示:让10台机器随时并发, -n:加起来发5000次

[root@foundation73 ~]# ab -c 10 -n 5000 http://172.25.254.1/index.php

注意:此时在浏览器页面可以看见命中率50%
在这里插入图片描述

[root@foundation73 ~]# ab -c 10 -n 5000 http://172.25.254.1/example.php

注意:刷新后会发现速度变宽此时命中100%
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44209804/article/details/89436820