本文转载http://blog.csdn.net/zhihua_w  不错的博客,仅供本人学习之用

一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就显得很重要了,可以很好的减轻数据库和服务器的压力,当然解决高并发的技术有很多,这里只是以缓存的角度来说明使用memcache的便捷性和方便性,使用memcache的前提是需要在服务端先配置好memcahche的环境(上篇文章已经讲述过了)!确认memcahce可以正常连接之后就可以在程序使用了!

1、PHP中Memcahce的所有方法总结

Memcache函数 所有的方法列表如下:

  1. Memcache::add – 添加一个值,如果已经存在,则返回false
  2. Memcache::addServer – 添加一个可供使用的服务器地址
  3. Memcache::close – 关闭一个Memcache对象
  4. Memcache::connect – 创建一个Memcache对象
  5. memcache_debug – 控制调试功能
  6. Memcache::decrement – 对保存的某个key中的值进行减法操作
  7. Memcache::delete – 删除一个key值
  8. Memcache::flush – 清除所有缓存的数据
  9. Memcache::get – 获取一个key值
  10. Memcache::getExtendedStats – 获取进程池中所有进程的运行系统统计
  11. Memcache::getServerStatus – 获取运行服务器的参数
  12. Memcache::getStats – 返回服务器的一些运行统计信息
  13. Memcache::getVersion – 返回运行的Memcache的版本信息
  14. Memcache::increment – 对保存的某个key中的值进行加法操作
  15. Memcache::pconnect – 创建一个Memcache的持久连接对象
  16. Memcache::replace -对一个已有的key进行覆写操作
  17. Memcache::set – 添加一个值,如果已经存在,则覆写
  18. Memcache::setCompressThreshold – 对大于某一大小的数据进行压缩
  19. Memcache::setServerParams – 在运行时修改服务器的参数

PHP虽然己经做到很好很快了,但是如果大数据量时还是会有些卡了,这里介绍一下PHP中使用Memcache缓存技术提高响应速度方法,有需要了解的朋友可参考。
        Memcache既可以在Linux下使用,也可以在Windows系统下使用,当然首推linux系统,至于如何安装Memcache,Google一下就什么都出来了,博主也有一篇在Windows平台下安装Memcache的教程博文,有兴趣的可以看一下。

2、使用Memcache的提高响应速度

① 例子1 - 代码如下:

  1. <?php
  2. //连接Memcache
  3. $mem = new Memcache;
  4. $mem->connect("127.0.0.1", 11211) or die ("Could not connect");
  5. //此函数可以显示Memecache的版本
  6. $version = $mem->getVersion();
  7. echo "Memcached Server version:  " . $version . "<br>";
  8. //保存数据数据到Memcache缓存,参数60表示写入缓存数据的失效时间(单位是秒)
  9. $mem->set('key1', 'This is first value', 0, 60);
  10. $val = $mem->get('key1');
  11. echo "Get key1 value: " . $val . "<br>";
  12. //替换数据
  13. $mem->replace('key1', 'This is replace value', 0, 60);
  14. $val = $mem->get('key1');
  15. echo "Get key1 value: " . $val . "<br>";
  16. //保存数组数据
  17. $arr = array('aaa', 'bbb', 'ccc', 'ddd');
  18. $mem->set('key2', $arr, 0, 60);
  19. $val2 = $mem->get('key2');
  20. echo "Get key2 value: ";
  21. print_r($val2);
  22. echo "<br>";
  23. //删除保存的缓存数据
  24. $mem->delete('key1');
  25. $val = $mem->get('key1');
  26. echo "Get key1 value: " . $val . "<br>";
  27. //清除所有缓存数据
  28. $mem->flush();
  29. $val2 = $mem->get('key2');
  30. echo "Get key2 value: ";
  31. print_r($val2);
  32. echo "<br>";
  33. //关闭Memcache连接
  34. $mem->close();
  35. ?>

初始化一个Memcache的对象:$mem = new Memcache;连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:$mem->connect("127.0.0.1", 11211);保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:$mem->set(‘key1‘, ‘This is first value', 0, 60);从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出;然后是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了;同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出;然后删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果;最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接。

② 例子2 - 代码如下:

  1. <?php
  2. //使用Memcache缓存,进行连接
  3. $mc = memcache_connect('localhost', 11211);
  4. $pn = $mc->get('pid');
  5. echo $pn;
  6. if ($pn < 1)
  7. $pn = 1;
  8. else
  9. $pn++;
  10. //设置缓存数据永不过期
  11. $mc->set('pid', $pn, 0, 0);
  12. //关闭Memecahe连接
  13. memcache_close($mc);
  14. ?>

希望上述的demo代码对大家的PHP开发有所帮助。

3、其他的关于Memecache

① Memcache和Memcached的区别

为什么会有Memcache和Memcached两种名称?其实Memcache是这个项目的名称,而Memcached是它服务器端的主程序文件名,知道它们所包含的意思了吧。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。

② Memcache的服务器端和客户端安装

分为两个过程:Memcache服务器端的安装和Memcached客户端的安装。

所谓服务器端的安装就是在服务器(一般都是linux系统)上安装Memcache实现数据的存储。

所谓客户端的安装就是指PHP(或者其他程序,Memcache还有其他不错的api接口提供)去使用服务器端的Memcache提供的函数,需要PHP添加扩展。

③ 什么时候使用Memcache和Memcache的使用环境

使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。那么一般的焦点就是集中在如何分担数据库压力和进行分布式,毕竟单台Memcache的内存容量的有限的。我这里简单提出我的个人看法,未经实践,权当参考。

版权声明:转载时请标注http://blog.csdn.net/zhihua_w

详解PHP操作Memcache缓存技术提高响应速度的方法的更多相关文章

  1. PHP利用memcache缓存技术提高响应速度

    PHP下memcache模块是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是对于设计动态web程序时减少对数据库的访问.memcache也提供用于通信对话(sessio ...

  2. 减少HTTP请求之合并图片详解(大型网站优化技术)

    原文:减少HTTP请求之合并图片详解(大型网站优化技术) 一.相关知识讲解 看过雅虎的前端优化35条建议,都知道优化前端是有多么重要.页面的加载速度直接影响到用户的体验.80%的终端用户响应时间都花在 ...

  3. 详解OJ(Online Judge)中PHP代码的提交方法及要点【举例:ZOJ 1001 (A + B Problem)】

    详解OJ(Online Judge)中PHP代码的提交方法及要点 Introduction of How to submit PHP code to Online Judge Systems  Int ...

  4. 详解JavaScript数组过滤相同元素的5种方法

    详解JavaScript数组过滤相同元素的5种方法:https://www.jb51.net/article/114490.htm

  5. php操作memcache缓存基本方法

    memcache 是一个高效的分布式的内存对象缓存系统,他可以支持把php的各种数据(数组,对象,基本数据类型)放在它管理的内存中 1.代码使用 <?php //连接 $mem = new Me ...

  6. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  7. ASP.NE的缓存技术提高Web站点的性能

    一:我们为什么要使用缓存? 先来理解一下asp.net缓存技术的基本原理:把访问频繁的数据以及需要花大量的时间来加载的数据缓存在内存中,那么用户在下次请求同样的数据时,直接将内存中的数据返回给用户,从 ...

  8. 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高

    第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...

  9. 百度大脑UNIT3.0详解之嵌入式对话理解技术

    相信很多人都体验过手机没有网时的焦虑,没有网什么也做不了.而机器人也会遇到这样的时刻,没有网或者网络环境不好的情况下,无法识别用户在说什么,也无法回复用户.在AIoT(AI+物联网)飞速普及的现在,智 ...

随机推荐

  1. 【手记】.net正则行尾匹配符$的问题

    本来想用正则Split一下sql语句中简单场景的的GO,于是用^GO$(配合忽略大小写和多行模式),可居然连这种情况都搞不掂: go 如果删掉$就能匹配了,但这显然不是办法,遂又在VS的C#交互窗口. ...

  2. HDU1559

    最大子矩阵 Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  3. Python 多线程、多进程 (三)之 线程进程对比、多进程

    Python 多线程.多进程 (一)之 源码执行流程.GIL Python 多线程.多进程 (二)之 多线程.同步.通信 Python 多线程.多进程 (三)之 线程进程对比.多线程 一.多线程与多进 ...

  4. js 键盘码

    键盘各按键对应的数字 keycode 9 = Tab keycode 12 = Clear keycode 13 = Enter keycode 16 = Shift keycode 17 = Con ...

  5. SD从零开始62-63,不完全日志,业务伙伴及业务伙伴确定

    [原创] SD从零开始62 不完全日志 不完全日志Incompletion log 一个不完全日志是销售凭证中对你公司重要的而还没有在系统中输入的所有数据的清单: 你可以在配置中为不完全日志定义这些数 ...

  6. Android ViewPager + Fragment实现滑动页面

    效果: PagerData类: package com.cloud.viewpagerdemo; import java.io.Serializable; class PagerData implem ...

  7. 使Volley完美支持自定义证书的Https

    其实在最早的版本里,Volley甚至是不支持https协议的,只能跑http,当然你也可以自己修改他的源码让他支持,如今volley的代码经过一些改进以后, 已经可以完美支持https协议了,无论是在 ...

  8. [Q&A] 解决 SBT 初始化或下载 jar 包速度慢的问题

    原文地址:https://www.cnblogs.com/memento/p/9153012.html 在 C:\Users\用户名\.sbt 目录下添加一个 "repositories&q ...

  9. Tensorflow激活函数

    注意: 1.大多情况下使用Relu激活函数这种激活函数计算快,且在梯度下降中不会卡在plateaus(平稳段),对于大的输入,也不会饱和. 2.logistic function和hyperbloic ...

  10. Python之岭回归

    实现:# -*- coding: UTF-8 -*- import numpy as npfrom sklearn.linear_model import Ridge __author__ = 'zh ...