zoukankan      html  css  js  c++  java
  • php之memcache缓存技术

    1.memcache:是一个高效的分布式内存对象缓存系统

    2.  IES---请求--->服务器(apace) |

      |              |---->会查看memcache.是否有IES想要的内容-->|

      |                      |               |--->有,从memcache中取到内容,返回IE

          |                         |                 |--->没有,去数据库取,取到后添加到memcache中。返回IE

       多用户                                             多个memcache(分布式)

    3.安装memcached server.

    ①下载memcached.exe

    ②在cmd模式下,进入memcached.exe所有目录,输入以下命令,来安装服务

    memcached.exe -d install

    ③再输入以下命令,启动服务

    memcached.exe -d start

    ④输入netstat -an 确定11211端口是否打开。11211是memcached 服务的端口

    TCP    0.0.0.0:11211          0.0.0.0:0              LISTENING

    ⑤到第④步,就可以通过telent 127.0.0.1 11211 来对memcached 服务进行增删改查了,不过我现在主要介绍php环境下如何使用memcache缓存,所以还得继续

    ⑥把php_memcache.dll拷到php环境下的ext目录下

    ⑦然后找到php.ini,添加extension=php_memcache.dll

    ⑧大功告成,可以写程序来验证一下

    4.php下的memcache 扩展例子,直接上代码

    方法参考:这里

    memcache1.php的代码

     1 <?php
     2 require_once 'Stu.php';
     3 //实例化memcache
     4 $mem = new Memcache();
     5 //连接服务器,指定端口
     6 $mem->connect("127.0.0.1",11211);
     7 //添加存储内容 字条串
     8 $mem->add("name","dazhu",0,300);
     9 //添加存储内容 int
    10 $mem->add("age",5,0,300);
    11 //添加存储内容 boolean,取的时候,假如是false,什么也取不出来,假如是true,取出来为1
    12 $mem->add("man",TRUE,0,300);
    13 //添加存储内容 array
    14 $arr = array("aa"=>"dazhu","bb"=>"afei");
    15 $mem->add("names",$arr,0,300);
    16 //添加存储内容 Stu對象
    17 $stu = new Stu("DAZHU", 23);
    18 $mem->add("stu",$stu,0,300);

    memcache2.php的代码

     1 <?php
     2 require_once 'Stu.php';
     3 $mem = new Memcache();
     4 $mem->connect("127.0.0.1",11211);
     5 $name = $mem->get("name");
     6 echo $name."<br/>";
     7 $age = $mem->get("age");
     8 echo $age."<br/>";
     9 $man = $mem->get("man");
    10 echo $man."<br/>";
    11 $arr = $mem->get("names");
    12 echo var_dump($arr)."<br/>";
    13 $stu = $mem->get("stu");
    14 echo $stu->name."的年齡為:".$stu->age;

    其中Stu.php的代码

    1 <?php
    2 class Stu{
    3     public $name;
    4     public $age;
    5     public function __construct($name,$age){
    6         $this->name=$name;
    7         $this->age= $age;
    8     }
    9 }

    程序运行结果如下:

    5.补充(见韩顺平课件):

    ①Socket套接字操作memcache缓存:memcached-client.php(函数).这种方法的特点如下:

    • 不需要开启memcache扩展
    • 2.使用fsockopen()套接字连接memcached
    • 3.同样执行执行CRUD

    ②基于c/s架构,协议简单

    • c/s架构,此时memcached为服务器端,我们可以使用如PHP,c/c++等程序连接memcached服务器。
    • memcached的服务器客户端通信并不使用XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据

    ③基于libevent的事件处理

    • libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统: Windows/Linux/BSD/Solaris 等操作系统的的事件处理。
    • Memcached使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力。

    ④内置内存存储方式

    • 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

    ⑤基于客户端的分布式

    ⑥将Session数据放入到Memcached

    • 保证memcache扩展开启,memcachd运行
    • 设置php.ini中session.save_handler=memcache
    • 设置php.ini中session.save_path=tcp://localhost:11211
    • 也可以通过php函数 ini_set() 函数在页面设置.

    ⑦Memcached的数据是无用户状态的.即不会和某个用户绑定

     

  • 相关阅读:
    ubuntu下安装maven
    159.Longest Substring with At Most Two Distinct Characters
    156.Binary Tree Upside Down
    155.Min Stack
    154.Find Minimum in Rotated Sorted Array II
    153.Find Minimum in Rotated Sorted Array
    152.Maximum Product Subarray
    151.Reverse Words in a String
    150.Evaluate Reverse Polish Notation
    149.Max Points on a Line
  • 原文地址:https://www.cnblogs.com/fanglove/p/3131485.html
Copyright © 2011-2022 走看看