一、什么是memcache

memcache是目前主流的一个高性能的分布式内存对象缓存系统;它以key-value形式在内存中存储数据。由于数据缓存在内存中,所以相比操作DB而言,它不需要解析SQL、磁盘I/O等开销,效率更高。通常用来减轻数据库负载,提升系统性能,或作为服务器之间数据共享的存储媒介,比如存储分布式session。

工作过程:先查看客户端的请求数据是否在memcache中,若存在的话,直接把请求结果返回给客户端;若不在缓存中,则从后端数据库中获取响应数据包,同时把获取的响应数据包在memcache中保存一份(便于下一次直接再缓存中获取)。当分给memcache的内存用完之后,会使用LRU(Least Recently Used,最近最少使用策略)加上到期失效策略,失效策略先被替换,然后再替换掉最近未使用的数据。

二、memcache与memcached的区别

memcache是通过客户端的请求来访问,是这个项目的名称;而memcached是服务器端的主程序文件名。

三、memcache的安装

由于之前在server6中进行了php源码的安装,就继续在server6中实验。

1)解压memcache软件包

--->  tar zxf memcache-2.2.5.tgz

2) 为了方便直接使用php的二进制命令,我们把之前编译好的php的二进制命令的绝对路径添加在环境变量中。

--->  vim ~/.bash_profile

--->  source  ~/.bash_profile        # 使添加的环境变量生效

3)创建预编译环境并进行编译汇编memcache源码包。phpize用来扩展php模块的,可以在原来编译好的php中添加新的模块和功能。phpize的作用也可以检测环境(由于phpize是在php安装目录下的,所以使用phpize会根据php配置的情况产生与其相匹配的configure文件),建立一个configure文件。需要在一个目录下运行phpize,且生成的configure文件就在该目录。

   --->  cd /root/memcache-2.2.5

--->  phpize

--->  ./configure             # 预编译

--->  make  && make install   # 汇编安装

4)编译完成后,会提示进入/usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20131226/目录。我们可以在该目录中查看我们添加的memcache模块。

--->  cd /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20131226/

--->  ls

--->  php -m | grep memcache        # 此时没有添加进去

--->  vim /usr/local/lnmp/php/etc/php.ini              # 编辑php配置文件,把memcache模块的加载打开

--->  /etc/init.d/php-fpm reload

--->  php -m | grep memcache                # 此时再次查看memcache模块是否添加进去

5)安装memcached服务,并启动。(memcache服务的端口等信息在/etc/sysconfig/memcached文件中)

--->  yum install -y  memcached

--->  /etc/init.d/memcached start

--->  rpm  -qc  memcached              # 查看memcache的配置文件所在目录

--->  netstat -antlp | grep 11211      # 从配置文件中可以查看出,memcached服务所在端口为11211

6)对memcache配置文件进行修改

--->  cd  /root/memcache-2.2.5

--->  cp example.php memcache.php /usr/local/lnmp/nginx/html/     # 对example.php文件进行查看即可

   --->  vim  /usr/local/lnmp/nginx/html/memcache.php       # 修改密码和缓存服务      

7)在浏览器中查看。

# 查看example.php的结果为:

# 查看memcache.php的时候需要登陆。(此时的用户名和密码为上面自己修改的)

# 输入正确的用户名和密码之后的结果是:(php和memcache服务的信息)

# 显示的是缓存命中情况

8)访问测试: 在真机中访问页面,使用浏览器中查看安装了memcache和没安装memcache的网页的性能的变化

# 在真机中使用命令: ab  -c 10 -n 1000 http://172.25.2.6/memcache.php

#  ab  -c 10 -n 1000 http://172.25.2.6/example.php   # 在截图中我们可以看出,每个请求响应时间少。
  

memcache+php实现页面访问的加速的更多相关文章

  1. 友盟(Swift)-集成、统计用户数量、具体页面访问数量、具体按钮点击数量

    什么是友盟.有什么用? 这些傻瓜问题这里就不解释了,可以自己百度去. 友盟提供的文档和demo都是oc的,这里用swift写了一个小demo,在此分享一下. 步骤1:友盟后台注册应用(iOS),拿到a ...

  2. angularjs中的页面访问权限设置

    11月在赶一个项目,这阵子比较忙,挤挤时间更一篇博客吧,如标题所述说说在ng中页面访问权限控制的问题,水平有限各位看官见谅: 在以往的项目中,前后端常见的配合方式是前端提供页面和ui加一点DuangD ...

  3. Asp.net 页面访问模板页的属性

    首先 页面需要添加下面一段代码 <%@ MasterType VirtualPath="~/User/User.Master" %> 添加的位置如图 这样就可以在这个页 ...

  4. Session的使用(登录例案+其它页面访问)

    本程序功能是使用Session将用户输入的用户名保存在Session中(登录成功情况下,登录失败不会有Session值),其它页面想访问时会先判断是否有之前存的Session值. 登录Login.ht ...

  5. 自建目录中jsp页面访问servlet路径出错404

    ---恢复内容开始--- 自建目录中jsp页面访问servlet路径出错404 使用eclipse建立的项目,总是会遇到路径问题,比如jsp页面访问servlet,jsp在默认的路径.jsp在自建目录 ...

  6. 利用curl并发来提高页面访问速度

    在我们平时的程序中难免出现同时访问几个接口的情况,平时我们用curl进行访问的时候,一般都是单个.顺序访问,假如有3个接口,每个接口耗时500毫 秒那么我们三个接口就要花费1500毫秒了,这个问题太头 ...

  7. Apache配置站点根目录、用户目录及页面访问属性

    一.配置站点根目录及页面访问属性 DocumentRoot "/www/htdoc" <Directory "/www/htdoc"> Option ...

  8. 通过cookie记录,设置页面访问的跳转页

    通过cookie记录,设置页面访问的跳转页 转载自:http://blog.csdn.net/yixiao_naihe/article/details/26679515. 目的: 1.访问fm.htm ...

  9. Tomcat 8默认工具manager管理页面访问配置

    Tomcat 8默认工具manager管理页面访问配置 1. 分配相关的角色权限 需要配置的配置文件是${catalina.home}/conf/tomcat-users.xml先给Tomcat访问相 ...

随机推荐

  1. 如何通过iframe调用其他页面的内容

    我们在建站的时候经常会在页面出现同样的内容,比如公司简介之类的,这些东西很长,会减低网页的原创程度,相似度太高,对SE不是很友好.这时我们可以考虑把这部分内容写成一个单独的简单页面,然后通过ifram ...

  2. 002-and design-基于dva的基本项目搭建

    一.概述 在真实项目开发中,你可能会需要 Redux 或者 MobX 这样的数据应用框架,Ant Design React 作为一个 UI 库,可以和任何 React 生态圈内的应用框架搭配使用.我们 ...

  3. Jenkins时区设置

    系统管理->脚本命令行 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

  4. (21)纹理缓存(Texture Cache)

    简介 纹理缓存是将纹理缓存起来方便之后的绘制工作.每一个缓存的图像的大小,颜色和区域范围都是可以被修改的.这些信息都是存储在内存中的,不用在每一次绘制的时候都发送给GPU. CCTextureCach ...

  5. 26QTimer定时器的使用

    前面介绍过定时器事件(QTimerEvent),有个弊端,就是每启动一个定时器都要对应的ID.本次介绍在设计器中使用Qtimer. 首先在设计器中添加一个LCD Number,和两个按钮. 头文件 # ...

  6. cocos2dx 3.x 拼图小游戏

    .h #define IMAGE_MAX 2 //图片的个数.. //图片结构体 属性 struct IMAGE_DATA { cocos2d::Sprite *m_pImage; bool m_bO ...

  7. Java中使用OpenSSL生成的RSA公私钥进行数据加解密

    当前使用的是Linux系统,已经按装使用OpenSSL软件包, 一.使用OpenSSL来生成私钥和公钥 1.执行命令openssl version -a 验证机器上已经安装openssl 1 open ...

  8. springcloud6---Eureka的配置:

    Eureka的配置: 自我保护:表示eureka进入了自我保护模式,eureka启动的时候会从高可用其他节点获取注册表信息,eureka client会每30秒发送心跳,如果eureka server ...

  9. chrome不能安装adblock插件

    csdn简直就是个垃圾,名字山寨MSDN不说,一个页面数还十个广告.国人还这么多人捧,真是醉了.博客的话还是博客园,简洁,一切为了技术. 既然csdn是个垃圾,那么看部分文章时怎么少得了广告屏蔽插件a ...

  10. Docker 版本升级

    当前系统版本:Centos 7.4 x64 删除老版本docker sudo yum remove docker docker-common docker-selinux docker-engine ...