zoukankan      html  css  js  c++  java
  • 使用PHP连接、操纵Memcached的原理和教程

    http://www.crazyant.net/1014.html

    Memcahced开源分布式内存对象缓存系统通过减少数据库的负担,从而能够加速你的web应用。在本文中我将解释怎样实现一个基于Memcahced的缓存系统。

    数据库

    实例中使用的数据库表包含一个自增的id,一个标题和一个链接字段:

    第一次用户请求到达

    第一次用户发送请求,PHP程序会在访问db数据库的同时,将访问的数据写入Memcached系统。

    Memcached

    如图所示,user发送了req请求,application发送数据请求到database,database在将数据返回给application的同时,将数据缓存到了Memcached服务器。

    第二次用户请求到达了

    第二次用户请求到达,会直接读取Memcached服务器的缓存,而不是数据库中的内容,从而减轻了服务器的负担。

    Memechaced2

    本图显示,第二次的请求,application直接从Memcached(简称Mc)读取数据。

    Memcached的安装方法

    网络上有大量关于Memcached安装的方法,其实它就是一个缓存服务器应用程序,意思就像是你装了个Mysql一样,装好了用账号密码IP地址连一下就能使用。

    以下是一些很好的资源:

    php_memcache.dll

    在windows上安装Memcached的方法

    在Windows7的Xampp上安装Memcached的方法

    在Windows7上的PHP5.3安装Memcached的方法

    index.php用PHP操作Memcached的演示

    db.php用于连接数据库的代码

    你需要改变代码中的IP地址、用户名、密码、数据库名字。

    注:本文参考Memcached with PHP

    关于Windows7 下面安装memcached和php的memcache扩展

    http://blog.sina.com.cn/s/blog_61d0b6cd0100w9qq.html

    Php代码与memcached的交互和与mysql的交互原理是一样的,需要安装一个服务器端的memcached ,现有的交互处理过程已经封装成了一个php的扩展了;需要在php.ini中,将这个扩展加进去。

    Php memcached官方手册地址:http://cn2.php.net/manual/en/memcached.get.php

    说说我的安装过程:

    1.我的环境:php-5.2.6. memcached-win32-1.2.6.

    2. 根据下面的步骤安装完以后,可以去控制面板看看memcached服务是否启动起来。如果没有此服务需要重新安装,如果有了,不能启动,可以看一下是不是路径错误了。【我的就是路径错误,启动不起来。找不到指定文件。】 

    3.php5.2.6自带memcache.dll文件,可以打开phpinfo()看看有没有memcache的扩展。如果没有,可以去pecl地址下载对应版本的memcache替换掉原来的。

    一:下载地址:

    php扩展库pecl下载地址:

    http://museum.php.net/php5/

    二:安装与配置:

          安装方法一:下载以后,解压,然后放到C盘根目录下。双击memcached.exe就可以启动memcached服务了,这时,你可以打开任务管理器,如果在进程里出现memcached.exe就说明memcached服务已经启动了,还要让cmd窗口开着,这样才是启动了memcached服务。

          安装方法二:

             1.下载Windows版的memache的压缩包

             2.解压到合适的位置如:D:memached目录下面。

             3.进入命令行切换到该目录下面,可以用dir看一下目录下面的文件信息。

             4. 输入:memached.exe -d install 安装服务器。

             5. 输入:memached.exe -d start启动服务器,等到下次启动系统的时候,此服务会自动启动。默认的端口号为11211.

    配置:

    1.    下载pecl模块包(地址如上),解压后将php_memache.dll放到php目录的ext子目录下,为了使得能正常使用,最好下载和php版本一致的模块包。

    2.    在php.ini文件中导入'extension=php_memcache.dll'

    然后重启apache,估计就可以了(可以在phpinfo.php 中,看看是否有memcached模块),当然了,我们可以写一个实验一下

       $memcache_obj = new Memcache;

    $memcache_obj->connect('localhost', 11211); 

    $memcache_obj->set('var_key', 'This is a memcached test!',MEMCACHE_COMPRESSED, 50);

    echo $memcache_obj->get('var_key');

    备注:

    1)memcached 的几个指令:

    -p监听的端口
    -l连接的IP地址, 默认是本机
    -d start启动memcached服务
    -d restart重起memcached服务
    -d stop|shutdown关闭正在运行的memcached服务
    -d install安装memcached服务
    -d uninstall卸载memcached服务
    -u以的身份运行(仅在以root运行的时候有效)
    -m 最大内存使用,单位MB。默认64MB
    -M 内存耗尽时返回错误,而不是删除项
    -c最大同时连接数,默认是1024
    -f 块大小增长因子,默认是1.25
    -n 最小分配空间,key+value+flags默认是48
    -h 显示帮助

    2)memcached相关的函数:

    01.Memcache::add —添加一个值,如果已经存在,则返回false
    02.Memcache::addServer — 添加一个可供使用的服务器地址
    03.Memcache::close —关闭一个Memcache对象
    04.Memcache::connect —创建一个Memcache对象
    05.memcache_debug —控制调试功能
    06.Memcache::decrement —对保存的某个key中的值进行减法操作

    07.Memcache::delete —删除一个key值
    08.Memcache::flush —清除所有缓存的数据
    09.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 — R对一个已有的key进行覆写操作
    17.Memcache::set —添加一个值,如果已经存在,则覆写
    18.Memcache::setCompressThreshold —对大于某一大小的数据进行压缩
    19.Memcache::setServerParams —在运行时修改服务器的参数

    3)zend framework的cache后端支持memcached,我们也可以来试试看

    $front = array('lifeTime' =>100,'automatic_serialization' =>true);
         $back = array('server' =>array(array('host' =>'127.0.0.1','port' =>11211,'persistent' =>true)),compression =>true);       //后端server是个二维数组,每一维代表一个连接。
         $cache = Zend_Cache::factory("Core","Memcached",$front,$back);
         $cache->save('This is zend memcached','zend');
         echo $cache->load('zend')."<br />";

        现在zend framework 的代码,自己还没有详细研究,等自己以后在学习的过程中,可以尝试用一下;

  • 相关阅读:
    如何只通过Sandboxed Solution启动一个定时执行的操作
    创建与SharePoint 2010风格一致的下拉菜单 (续) 整合Feature Custom Action框架
    创建与SharePoint 2010风格一致的下拉菜单
    《SharePoint 2010 应用程序开发指南》第二章预览
    SharePoint 2013 App 开发 (1) 什么是SharePoint App?
    使用Jscex增强SharePoint 2010 JavaScript Client Object Model (JSOM)
    搜索范围的管理
    SharePoint 2010 服务应用程序(Service Application)架构(1)
    SharePoint 2010 服务应用程序(Service Application)架构(2)
    SharePoint 2013 App 开发 (2) 建立开发环境
  • 原文地址:https://www.cnblogs.com/jukan/p/5643763.html
Copyright © 2011-2022 走看看