memcache用内存缓存技术来实现对访问php页面的加速

一、什么是Memcache

Memcache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用用来减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度

二、Memcache的应用场景

通常情况下,我们会在访问量较高的Web网站和应用中使用Memcache,用来环节数据库的压力,并且提升网站和应用的响应速度
在应用程序中,我们通常在以下节点来使用Memcached:

  1. 访问频繁的数据库数据(身份token、首页动态)
  2. 访问频繁的查询条件和结果
  3. 作为session的存储方式(提高session存取性能)
  4. 页面缓存
  5. 更新频繁的非重要数据(访客量、点击次数)
  6. 大量的hot数据
    ** 常用的工作流程**:先检查客户端的请求数据是否在memcached中,如果有的话,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcache中,就去查数据库,把从数据库中获取的数据返回个客户端,同时把数据缓存一份到memcached中;每次更新数据库的同时更新memcached中的数据,保证一致性;当分配个memcached内存空间用完之后会使用LRU(least recently used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据
    在这里插入图片描述

三、Memcache的服务器端和客户端的安装

1、创建一个预编译环境并进行编译汇编memcache源码包

phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,比如你想在原来编译好的php中加入memcached模块或是ImageMagick等模块,可以使用phpize
在这里插入图片描述

2、如何使用phpize

当php编译完成之后,会在php的bin目录下生成一个phpize这个脚本文件,
现在想在php中加入memcache扩展模块

[root@server1 ~]# tar zxf memcache-2.2.5.tgz
  • 将前面php编译完成的二进制命令加入到系统的环境变量中,保证可以直接调用php命令
[root@server1 bin]# vim ~/.bash_profile 
[root@server1 bin]# source ~/.bash_profile 
  • 将在php中扩展memcache模块
[root@server1 ~]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini
 873   extension=memcache.so
 [root@server1 etc]# /etc/init.d/php-fpm reload
Reload service php-fpm  done
  • 设置memcached密码
[root@server1 ~]# cd memcache-2.2.5
[root@server1 memcache-2.2.5]# cp example.php memcache.php /usr/local/lnmp/nginx/html/
[root@server1 memcache-2.2.5]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim memcache.php

在这里插入图片描述

  • 安装memcache服务端
[root@server1 html]# yum install -y memcached
[root@server1 html]# /etc/init.d/memcached start

访问example.php
在这里插入图片描述
访问memecache.php
在这里插入图片描述
登录进去之后:刷新example.php页面,可以在下图中看到hit命中率,刷新的次数越多,命中率越高,当多次访问,命中率可达到百分之百
在这里插入图片描述

  • **访问测试
    ab(apache bench)是apache下的一个工具,主要用于对web站点做压力测试
    在主机中测试
[root@foundation66 kiosk]# ab -c 10 -n 1000 http://172.25.66.1/index.php

在这里插入图片描述

[root@foundation66 kiosk]# ab -c 10 -n 1000 http://172.25.66.1/example.php

在这里插入图片描述
当访问example.php时,命中率大大提高,速度也提高了将近三倍。
注解:ab -c 10 -n 1000 http://172.25.66.1/example.php 测试结果分析

Server Software:        nginx/
Server Hostname:        172.25.66.1
Server Port:            80

Document Path:          /index.php
Document Length:        123 bytes	#请求的页面大小

Concurrency Level:      10		#并发量
Time taken for tests:   0.656 seconds		#测试总共耗时
Complete requests:      1000	#完成的请求
Failed requests:         	0		#失败的请求
   (Connect: 0, Receive: 0, Length: 909, Exceptions: 0)
Write errors:           0		#错误
Total transferred:      280000 bytes		#总共传输数据量
HTML transferred:      123000  bytes
Requests per second:     1525.84 [#/sec] (mean)	#每秒钟的请求量
Time per request:       6.554  [ms] (mean)			#平均请求等待时间(用户等待时间)
Time per request:      0.655  [ms] (mean, across all concurrent requests)	#服务器平均请求响应时间,在并发量为1时,用户等待时间相同
Transfer rate:         417.22  [Kbytes/sec] received		#平均每秒多少k,即就是带宽速率
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值