zoukankan      html  css  js  c++  java
  • php_memcache扩展

    今天在一家招聘信息看到需要熟悉memcache,以前没接触过,用的都是redis,今天稍微看了下,在这里记述下一些基础点。

    memcache是什么?

    首先我们需要了解memcache是做什么的,他有什么作用?

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

     

    在有些地方我们会发现它会以memcached名字出现,我们只要知道他们能够指代这个缓存系统。memcache是指这个项目的名称,memcached是指系统服务端的程序。

     

    memcache的安装:

    下载地址:http://yunpan.cn/Q9QcS3dIAVe5A (这是我的一个网盘分享,大家也可以去网上找其他的版本下载,内含php_memcache.dll(php5.3))

    网上的安装教程有很多,我在这里只简单的记述一下:

    1. 下载memcache的windows版,解压放某个盘下面,比如在c:memcached。
    2. 在终端下找到解压的目录memcached,然后运行memcached.exe -d install命令。
    3. 再输入memcached.exe -d start开发memcache服务。
    4.下载php_memcache.dll,请自己查找对应的php版本的文件。
    5. 在php.ini加入一行 extension=php_memcached.exe
    6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

     

    memcached指令:

    在这里也记述一下memcache的服务端的一些基本指令,大家可以通过memcached.exe -help或-h指令进行查询。

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

    memcache的使用:

    安装好php_memcache.dll扩展之后,那么在PHP之中就可以连接memcache进行增删改查了。下面我们一步一步的来实战memcache。

     

    首先,要使用存储的数据,不管是mysql、redis、还是我们这里将的memcache都是需要预先连接的。PHP中连接memcache同redis,有使用过php_redis扩展的同学们应该都能轻车熟路的使用memcache。具体如下:

    $mem = new Memcache;

    //params: host, port

    $mem->connect("127.0.0.1", 11211);

    程序分析:

    $mem = new Memcache;

    初始化一个Memcache对象。当你配置好php_memcache.dll后就可以直接通过Memcache类生成该类的对象。若在这里出现问题的同学应该回到前面去检查检查扩展的配置了。

    $mem->connect("127.0.0.1", 11211);

    连接目标memcached服务器,第一个参数是目标IP地址,第二个参数是端口,端口可以在开启memcache服务的时候设置。若这里出现问题,未连接成功的同学们应该去检查一下memcached服务是否成功开启。

    连接好服务器后,我们就要开始对数据进行操作了。我们先从保存数据开始,在php中向缓存服务器增加一个条目使用Memcache::add,如下

    $mem->set(‘key1’, ‘this is first value’,0 , 60);

    这句代码就是向memcache中插入一个条目,该条目的key为’key1’,值为’this is first value’;如果你希望存储的数据经过压缩,那么你可以设置第三个参数为MEMCACHE_COMPRESSED,否则设置为0就可以了。当然你可以对数据设置一个过期时间,超过这个时间缓存服务器就会删除该条数据,设置为0表示不过期。注意前者不可以超过2592000秒(30天)。Set函数同样也可以保存数组,把value值传递一个数组就可以了。

    数据存储好后,那么当我们需要该条数据的时候我们就可以通过Memcache::get从服务端检索出来。具体如下:

    $val = $mem->get('key1');

    只需要将要检索的数据的key值传递给Memcache::get 就可以了,那么函数就会返回响应的value值。

    但是有的时候我一条条数据的来检索,会不会太麻烦,而且还会增加代码量。那么Memcache::get 当然也考虑到了这点,所以他支持你给他传递一个数组类型,然后返回数组中元素对应的value值的数组。

    获取key1的value之后,我突然发现是错的。那么我需要修改key1的值,memcache中我们使用Memcache::replace 来修改memcached中的数据值。具体如下:

    $mem->replace('key1', 'This is replace value', 0, 60);
    $val = $mem->get('key1');
    echo "Get key1 value: " . $val;

    Replace函数的参数跟set的参数是一样的,这里就不多说了。

    当我们有些数据不再需要使用的时候,那么我们就需要删除这些数据以免占空间。在memcached中我们是用Memcache::delete 来删除memcached中的key-value。具体如下:

    $mem->delete('key1', 30);

    Delete函数有两个参数,第一个参数为要删除数据的key值,第二个参数表示删除该元素的执行时间,就是多少时间后删除该元素,默认为0表示立即删除。

    Php_memcached扩展还提供了一个把memcache服务器上的数据都清楚的函数Memcache::flush。有需要的时候直接使用$mem->flush()就可以了,没有任何参数.

     

     

  • 相关阅读:
    Eclipse常用插件推荐
    Open Source Search Engines in Java
    Java: convert a file to a byte array, then convert byte array to a file.
    常用的Eclipse插件介绍
    一个搜索引擎周边的blog
    java文件读取。(单字节读取和按行读取读取)
    im4java
    csv格式读取通用类
    java以流方式下载文件struts2.x版_心灵的港湾_百度空间
    Jetty/Feature/Jetty Maven Plugin
  • 原文地址:https://www.cnblogs.com/MonkeyF/p/3395040.html
Copyright © 2011-2022 走看看