Memcached windows 下安装与测试

来源:互联网 发布:ubuntu 14.04 lamp 编辑:程序博客网 时间:2024/05/23 19:11

  Memcached windows 下安装与测试

  Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。

  Memcached官方:http://danga.com/memcached/

  关于Memcached的介绍请参考:http://www.yaosansi.com/post/1395.html

  安装Memcache Server

  1. 下载memcached的windows稳定版,解压放某个盘下面,比如在c:\memcached

  2. 以管理员身份在CMD下输入 "c:\memcached\memcached.exe -d install" 安装.

  3. 再输入:"c:\memcached\memcached.exe -d start" 启动。(以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了)

  wamp下配置memcache

  1.下载php_memcache.dll,请自己查找对应的php版本的文件,放到php\ext中

  2. 在php.ini 加入一行 ‘extension=php_memcache.dll’(附:集成环境如wamp真正用的php.ini在apache/bin目录下,需要确认有效的php.ini文件在何处)

  3.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

  memcached和memcache区别

  网上说这个东西是一个c/s结构的软件。确实是

  如果是c/s结构的话,那就说明必须有一个服务端和一个客户端

  所以,server端的就是memcached,client端可以看作是php_memcache.dll

  怎么说呢php_memcache.dll提供了一组函数,用来缓存,提取,删除缓存等一系列的操作,而通过这些函数,最终把数据是放到了安装有memcached服务的机器上,可以是本机,也可以是其它网络上的机器。

  你可以做下这样的测试,只启用php_memcache.dll中的一些函数,对缓存进行操作,把memcached服务给停用一下,看是否能正常使用。这时候是无法使用的。

  所以,可以把memcached看作是服务端,php_memcache.dll看作是客户端。

PHP下使用memcache实例

  header ( "Content-Type: text/html;charset=utf-8" );

  $conn = mysql_connect ( '192.168.57.112', 'root', '' ) or die ( 'Not connected : ' . mysql_error () );

  mysql_query ( "set names 'utf8'" );

  mysql_select_db ( 'ymall_mobile', $conn ) or die ( 'Can\'t use ymall_mobile : ' . mysql_error () );

  $sql = "SELECT * FROM ym_admin";

  //

  $mc = new Memcache ();

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

  $key = md5 ( $sql ); // memcached 对象标识符

  $datas = $mc->get ( $key );

  if (! $datas) {

  // 在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。

  echo "n" . str_pad ( 'Read datas from MySQL.', 60, '_' ) . "n";

  $result = mysql_query ( $sql ) or die ( "Invalid query: " . mysql_error () );

  while ( $row = mysql_fetch_array ( $result ) ) {

  $datas [] = $row;

  }

  // 将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。

  $mc->set ( $key, $datas, MEMCACHE_COMPRESSED, 5 );

  } else {

  echo "n" . str_pad ( 'Read datas from memcached.', 60, '_' ) . "n";

  }

  var_dump ( $datas );

  mysql_close ( $conn );