`
hudeyong926
  • 浏览: 2028419 次
  • 来自: 武汉
社区版块
存档分类
最新评论

PHP memcache memcached

阅读更多

1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的。与之对应的带d的memcached是建立在libmemcached的基础上,所以相对来说,memcached版本的功能更全一些,目前只有Linux版本
2.Memcache是原生实现的,支持OO和非OO两套接口并存。而memcached是使用libmemcached,只支持OO接口。
3.memcached还有个非常称赞的地方,就是flag不是在操作的时候设置了,而是有了一个统一的setOption()。Memcached实现了更多的memcached协议。
4.memcached支持Binary Protocol,而memcache不支持。这意味着memcached会有更高的性能。不过memcached目前还不支持长连接。

 

memcached是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种

格式的数据,包括图像、视频、文件以及数据库检索的结果等


 
使用 Memcache d的网站一般流量都是比较大的,为了缓解数据库的压力,让 Memcache d作为一个缓存区域,把部分信息保存在内存中,在前端能

 

够迅速的进行存取。

  Memcached服务器端的安装 (此处将其作为系统服务安装)
win32 binary: memcached-win32-bin.zip下载地址:http://code.jellycan.com/memcached/

1 解压缩文件到

c:\memcached

2 命令行输入

C:\memcached\memcached.exe -d install

NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
3 命令行输入

C:\memcached\memcached.exe -d start

该命令启动 Memcached ,默认监听端口为 11211,通过 memcached.exe -h 可以查看其帮助

 

命令行下测试

4、 telnet 127.0.0.1 11211   (使用telnet连接测试是否成功)

5、 输入:stats 命令查看基本信息, 然后在命令行中输入netstat -n -a 可以查看端口 

 

memcache服务器安全:

Memcache服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,这样如果服务器是直接暴露在互联网上的话是比较危险,轻则数据泄 露被其他无关人员查看,重则服务器被入侵,况且里面可能存在一些我们未知的bug或者是缓冲区溢出的情况,这些都是我们未知的,所以危险性是可以预见的。 为了安全起见,做两点建议,能够稍微的防止黑客的入侵或者数据的泄露。

现在就关于修改memcache服务器配置的问题说明如下:

1>用内网ip的方式提供web应用服务器调用,不允许直接通过外网调用,如将memcache服务器放在192.168.1.55的服务器上

2>修改端口,如改为11200

3>分配内存,如分配1024M(1G内存)

方法如下:

 

1>开始>运行:CMD(确定)

2>cd C:\memcached(回车)

3>memcached -m 1024 -p 11200 -l 192.168.1.55(回车)

注意,此时命令行不会回到C:\memcached>状态,并且实际上memcache服务器悄悄变为stop状态了。此窗口不可以关闭。新开一个cmd窗口

4>开始>运行:CMD(确定)

5>cd C:\memcached(回车)

6>memcached -d start(回车)可以关闭此cmd窗口。

此时可以使用新配置的memcache服务器了。

 

上述方法虽然解决了修改默认配置的问题,但是始终会有一个cmd窗口不可以关闭,否则就回到11211端口的默认配置。

更好的解决方案是通过修改服务的注册表配置:

1>开始>运行:regedit(回车)

2>在注册表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server

3>默认的ImagePath键的值是:"c:\memcached\memcached.exe" -d runservice,改为:"c:\memcached\memcached.exe" -d runservice -m 512 -p  11200 -l 192.168.1.55(确定,关闭注册表)

4>我的电脑(右键)>管理>服务 找到memcache的服务,重新启动一次即可生效。

此时,同网段内的电脑仍然可以利用这台memcache服务器,我们限定指定的web应用服务器才能够使用,通过防火墙的方式。如只允许 192.168.1.2这台Web服务器对Memcache服务器的访问,能够有效的阻止一些非法访问,相应的也可以增加一些其他的规则来加强安全性,这 个可以根据自己的需要来做。

 

二PHP中配置 Memcachd Client端

这里我们为了连接memcached server 我们需要php_memcache.dll

PHP membercached 扩展下载地址:http://downloads.php.net/pierre/

方法1  

1、下载: php_memcache.dll 组件 (WAMP自带了) 请自己查找对应的php版本的文件

2、复制 php_memcache.dll 到指定的组件目录, 默认在 php\ext\

3、在PHP.ini 加入一句话: extension=php_memcache.dll  

4、重启WEB服务,使用 phpinfo() 函数查看启用情况 如果有memcache,那么就说明安装成功!

php测试

<?php
$memcache = new Memcache();  //windows
$memcache->connect('127.0.0.1', 11211 ) or die ( "Could not connect Memcached server!" );  
$memcache->set( 'Memcache', "hello Memcache!<br/>");
echo $memcache->get('Memcache');
?>

结果hello Memcache!

恭喜你,配置成功了,现在开始慢慢捣鼓吧!不能运行看配置是否成功,或者检查下端口是否开放

<?php
$memcache = new Memcached();  //linux
$memcache->addServer('127.0.0.1', 11211 ) or die ( "Could not connect Memcached server!" );  
$memcache->set( 'Memcached', "hello Memcached!<br/>");
echo $memcache->get('Memcached');
?>

下面是一段简单的测试代码,代码中对标识符为 'mykey' 的对象数据进行存取操作:

<?php
//   包含 memcached 类文件
require_once('memcached-client.php');
//   选项设置
$options = array(
    'servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务
    'debug' => true,  //是否打开 debug
    'compress_threshold' => 10240,  //超过多少字节的数据时进行压缩
    'persistant' => false  //是否使用持久连接
    );
//   创建 memcached 对象实例
$mc = new memcached($options);
//   设置此脚本使用的唯一标识符
$key = 'mykey';
//   往 memcached 中写入对象
$mc->add($key, 'some random strings');
$val = $mc->get($key);
echo "n".str_pad('$mc->add() ', 60, '_')."n";
var_dump($val);
//   替换已写入的对象数据值
$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));
$val = $mc->get($key);
echo "n".str_pad('$mc->replace() ', 60, '_')."n";
var_dump($val);
//   删除 memcached 中的对象
$mc->delete($key);
$val = $mc->get($key);
echo "n".str_pad('$mc->delete() ', 60, '_')."n";
var_dump($val);
?>

 是不是很简单,在实际应用中,通常会把数据库查询的结果集保存到 memcached 中,下次访问时直接从 memcached 中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担。通常会将 SQL 语句 md5() 之后的值作为唯一标识符 key 。下边是一个利用 memcached 来缓存数据库查询结果集的示例(此代码片段紧接上边的示例代码):

<?php
$sql = 'SELECT * FROM users';
$mc = new Memcache; 
$mc->pconnect('127.0.0.1', 11211);  
$key = md5($sql);   //memcached 对象标识符
if ( !($datas = $mc->get($key)) ) {
    //   在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。
    echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";
    $conn = mysql_connect('localhost', 'test', 'test');
    mysql_select_db('test');
    $result = mysql_query($sql);
     while ($row = mysql_fetch_object($result))
        $datas[] = $row;
    //   将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。
    $mc->add($key, $datas);
} else {
     echo "n".str_pad('Read datas from memcached.', 60, '_')."n";
}
var_dump($datas);
?>

可以看出,使用 memcached 之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。

 

php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached

二、安装libmemcached

[root@vm15 local]# tar zxvf libmemcached-1.0.18.tar.gz 
[root@vm15 local]# cd libmemcached-1.0.18
[root@vm15 libmemcached-1.0.18]# ./configure --prefix=/usr/local/libmemcached --with-memcached
[root@vm15 libmemcached-1.0.18]# make
[root@vm15 libmemcached-1.0.18]# make install

 安装memcached扩展

# tar -zxvf memcached-2.2.0.tgz
# cd memcached-2.2.0
# /usr/local/php/bin/phpize
#./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-json --enable-memcached-igbinary --enable-memcached-msgpack --enable-memcached-protocol --disable-memcahed-sasl
# make && make install

 

  • 大小: 18.9 KB
  • 大小: 10 KB
  • 大小: 45.5 KB
  • 大小: 6.1 KB
分享到:
评论
2 楼 hudeyong926 2013-07-09  
memcached只能Linux下面装,window不支持,我弄个memcached截图怎么了,文章中都是说的memcache window的方法,我弄截图是方面我自己用
1 楼 112183883 2013-07-08  
一个php_memcache.dll可以同时装载php_memcache和php_memcached两个扩展,晕,不要误导别人好不好。你这图截的也太假了,一看字体就知道是linux下的截图,这样搞有意思么?虚心点不好么,非要装。。

相关推荐

    memcache memcached-1.2.6-win32-bin

    Memcache支持多种编程语言的客户端,包括PHP、Python、Java、Ruby等。 **Memcached**: Memcached与Memcache类似,但由Brad Fitzpatrick设计并开源。它的设计目标也是提供一个简单高效的缓存解决方案,但相比...

    Memcached与php_memcache.dll

    Memcached和`php_memcache.dll`是Web开发中常见的缓存解决方案,特别是在PHP环境中。Memcached是一个高性能的分布式内存对象缓存系统,用于减少数据库负载,通过在内存中存储数据来提高应用程序的性能。`...

    php7 的memcached扩展php_memcached.dll扩展

    **PHP7的Memcached扩展与`php_memcached.dll`** PHP7中的Memcached扩展是一个用于与Memcached缓存服务器通信的客户端库。Memcached是一种分布式内存对象缓存系统,广泛应用于Web应用程序,以提高数据读取速度,减轻...

    php5.4_memcache.dll 64位

    memcached window64位" 提到的是在Windows 64位环境下,用于PHP 5.4的`php_memcache.dll`动态链接库文件,以及`memcached.exe`,这是Memcached服务器的可执行文件。`php_memcache.dll`是PHP与Memcached通信的关键...

    php5.2.17关于memcached1.4.3及php_memcache扩展

    《PHP5.2.17与Memcached 1.4.3及php_memcache扩展的集成详解》 在Web开发领域,PHP作为一种广泛使用的服务器端脚本语言,常常需要与各种缓存系统协同工作,以提升网站性能。Memcached就是一个高效、分布式的内存...

    PHP memcache 多版本拓展

    PHP Memcache拓展是PHP编程中广泛使用的扩展,它为PHP应用程序提供了与Memcached缓存系统交互的能力。Memcached是一个高性能的分布式内存对象缓存系统,常用于减轻数据库负载,提升Web应用的响应速度。在PHP中,...

    memcached-1.2.5+php_memcache-5.2

    **memcached和php_memcache简介** `memcached`是一个高性能、分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,通过将数据和对象存储在内存中,以加快读取速度。它最初由Dustin S. McWharter开发,并在...

    memcached1.4.12的32,64版本以及php7的32,64扩展

    PHP7中的Memcache扩展提供了与Memcached服务器交互的一系列函数,如`memcache_connect()`用于建立连接,`memcache_set()`用于存储数据,`memcache_get()`用于获取数据,以及`memcache_close()`用于关闭连接等。...

    Memcached For PHP Windows版 带Memcache扩展和安装使用说明

    4.下载php_memcache.dll,请自己查找对应的php版本的文件 5.在C:\winnt\php.ini 加入一行'extension=php_memcache.dll’ 6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功! Memcached的...

    Lnmp+memcache+memcached

    在 PHP 代码中,可以使用 memcache 函数(如 `memcache_connect()`)连接到 Memcached 服务器,实现数据缓存。 在实际应用中,可以根据需求调整 Memcached 的内存大小、端口设置以及缓存策略。同时,为了保证数据...

    windows php memcache 扩展

    - 使用`Memcached`类代替`Memcache`,虽然名称相似,但`Memcached`提供了更多的功能和性能优化。 - 分布式存储:Memcache支持多台服务器集群,你可以通过配置多个服务器地址,实现负载均衡和故障转移。 - 键值大小...

    PHP7.1.xx-7.3xx各版本适配memcache.dll

    `memcache.dll` 是一个PHP扩展,允许PHP程序与Memcached缓存服务器进行通信,以提高Web应用的数据读取速度。Memcached是一个高性能、分布式的内存对象缓存系统,它广泛应用于减轻数据库负载,提升Web应用的响应速度...

    Memcached.exe php_memcache.dll 5.3 5.4 5.5

    Memcached和PHP_Memcache是两个在Web开发中常见的组件,尤其在处理高并发和大数据量的场景下,它们能够显著提升网站性能。Memcached是一个高性能的分布式内存对象缓存系统,而PHP_Memcache是PHP的一个扩展,用于与...

    wampPHP5.3.8,memcached.exe配置文件+php_memcache.dll文件

    本教程将详细讲解如何在Win7 64位系统上配置WAMP PHP5.3.8,并添加memcached服务以及相应的php_memcache.dll扩展。 首先,我们需要了解WAMP的组成。WAMP是由Apache HTTP服务器、MySQL数据库管理系统和PHP解释器构成...

    php memcached安装文档以及Memcached扩展

    **PHP与Memcached扩展安装详解** 在Web开发中,PHP是一种广泛应用的开源脚本语言,而Memcached则是一个高性能的分布式内存对象缓存系统。两者结合可以极大地提高网站的性能,减少数据库负载。本文将详细介绍如何在...

    PHP7.x 8.0 memcache dll php_memcache.dll

    PHP的memcache扩展允许开发者在PHP应用程序中与memcached服务器进行交互,实现数据的缓存功能。`php_memcache.dll`是Windows环境下PHP与memcache通信所需的组件,它是PHP的一个非官方扩展,使得PHP在Windows平台上...

    memcached-1.2.6+php_memcache-5.3-nts/ts

    标题 "memcached-1.2.6+php_memcache-5.3-nts/ts" 提供的信息表明,这个压缩包包含的是与 memcached 和 PHP 的 memcache 扩展相关的组件,具体版本为 memcached 1.2.6 和 php_memcache 5.3。这个组合通常用于在 PHP ...

    memcached-win64-1.4.4-14+php_memcache.dll文件

    压缩包里有memcached-win64-1.4.4-14和php_memcache-3.0.8-5.6-ts-vc11-x64版本的php_memcache.dll文件 亲测自己电脑Win8.1 64,可用

    phpstudy 常用 PHP 版本的 php_memcache.dll 及 php_redis.dll 扩展

    在PHP开发中,扩展(Extensions)是增强PHP功能的重要组件,比如`php_memcache.dll`和`php_redis.dll`就是两个非常重要的PHP扩展。 `php_memcache.dll`是PHP与Memcached缓存系统交互的扩展。Memcached是一种高性能...

    php扩展memcached完整包,内含dll文件

    资源中有memcached.exe文件和php_memcache.dll的5.3、5.4、5.5、5.6版本的32位和64位文件,根据自己的php版本选择php_memcache.dll文件,不能混用。里面有nts和ts两者版本,打开自己phpinfo(),查找Thread Safety,...

Global site tag (gtag.js) - Google Analytics