zoukankan      html  css  js  c++  java
  • 详解PHP操作Memcache缓存技术提高响应速度的方法

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

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

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

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

    [plain] view plain copy
     
    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 - 代码如下:

    [php] view plain copy
     
    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 - 代码如下:
    [php] view plain copy
     
    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
  • 相关阅读:
    Flink基于EventTime和WaterMark处理乱序事件和晚到的数据
    flink 有什么优点
    Flink-Kafka 连接器及exactly-once 语义保证
    腾讯大学
    Qt 获取文件路径、文件名、后缀
    Qt QDir::currentPath()和QAppllication::appllicationDirPath()用法区别
    Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
    Qt comboBox设置下拉菜单()
    Qt 快速读写Excel指南
    可见光的波长与频率对照表
  • 原文地址:https://www.cnblogs.com/yszr/p/8317072.html
Copyright © 2011-2022 走看看