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是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种
格式的数据,包括图像、视频、文件以及数据库检索的结果等
够迅速的进行存取。
一 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
相关推荐
Memcache支持多种编程语言的客户端,包括PHP、Python、Java、Ruby等。 **Memcached**: Memcached与Memcache类似,但由Brad Fitzpatrick设计并开源。它的设计目标也是提供一个简单高效的缓存解决方案,但相比...
Memcached和`php_memcache.dll`是Web开发中常见的缓存解决方案,特别是在PHP环境中。Memcached是一个高性能的分布式内存对象缓存系统,用于减少数据库负载,通过在内存中存储数据来提高应用程序的性能。`...
**PHP7的Memcached扩展与`php_memcached.dll`** PHP7中的Memcached扩展是一个用于与Memcached缓存服务器通信的客户端库。Memcached是一种分布式内存对象缓存系统,广泛应用于Web应用程序,以提高数据读取速度,减轻...
memcached window64位" 提到的是在Windows 64位环境下,用于PHP 5.4的`php_memcache.dll`动态链接库文件,以及`memcached.exe`,这是Memcached服务器的可执行文件。`php_memcache.dll`是PHP与Memcached通信的关键...
《PHP5.2.17与Memcached 1.4.3及php_memcache扩展的集成详解》 在Web开发领域,PHP作为一种广泛使用的服务器端脚本语言,常常需要与各种缓存系统协同工作,以提升网站性能。Memcached就是一个高效、分布式的内存...
PHP Memcache拓展是PHP编程中广泛使用的扩展,它为PHP应用程序提供了与Memcached缓存系统交互的能力。Memcached是一个高性能的分布式内存对象缓存系统,常用于减轻数据库负载,提升Web应用的响应速度。在PHP中,...
**memcached和php_memcache简介** `memcached`是一个高性能、分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,通过将数据和对象存储在内存中,以加快读取速度。它最初由Dustin S. McWharter开发,并在...
PHP7中的Memcache扩展提供了与Memcached服务器交互的一系列函数,如`memcache_connect()`用于建立连接,`memcache_set()`用于存储数据,`memcache_get()`用于获取数据,以及`memcache_close()`用于关闭连接等。...
4.下载php_memcache.dll,请自己查找对应的php版本的文件 5.在C:\winnt\php.ini 加入一行'extension=php_memcache.dll’ 6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功! Memcached的...
在 PHP 代码中,可以使用 memcache 函数(如 `memcache_connect()`)连接到 Memcached 服务器,实现数据缓存。 在实际应用中,可以根据需求调整 Memcached 的内存大小、端口设置以及缓存策略。同时,为了保证数据...
windows 操作系统的 php_memcached 扩展。包含适用于php7.0、php7.1、php7.2、php7.3、php7.4,NTS和TS,x86和x86_64各种版本。...2. 该资源是“php_memcached”扩展(不是php_memcache扩展)!!!
- 使用`Memcached`类代替`Memcache`,虽然名称相似,但`Memcached`提供了更多的功能和性能优化。 - 分布式存储:Memcache支持多台服务器集群,你可以通过配置多个服务器地址,实现负载均衡和故障转移。 - 键值大小...
`memcache.dll` 是一个PHP扩展,允许PHP程序与Memcached缓存服务器进行通信,以提高Web应用的数据读取速度。Memcached是一个高性能、分布式的内存对象缓存系统,它广泛应用于减轻数据库负载,提升Web应用的响应速度...
Memcached和PHP_Memcache是两个在Web开发中常见的组件,尤其在处理高并发和大数据量的场景下,它们能够显著提升网站性能。Memcached是一个高性能的分布式内存对象缓存系统,而PHP_Memcache是PHP的一个扩展,用于与...
本教程将详细讲解如何在Win7 64位系统上配置WAMP PHP5.3.8,并添加memcached服务以及相应的php_memcache.dll扩展。 首先,我们需要了解WAMP的组成。WAMP是由Apache HTTP服务器、MySQL数据库管理系统和PHP解释器构成...
**PHP与Memcached扩展安装详解** 在Web开发中,PHP是一种广泛应用的开源脚本语言,而Memcached则是一个高性能的分布式内存对象缓存系统。两者结合可以极大地提高网站的性能,减少数据库负载。本文将详细介绍如何在...
PHP的memcache扩展允许开发者在PHP应用程序中与memcached服务器进行交互,实现数据的缓存功能。`php_memcache.dll`是Windows环境下PHP与memcache通信所需的组件,它是PHP的一个非官方扩展,使得PHP在Windows平台上...
标题 "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-3.0.8-5.6-ts-vc11-x64版本的php_memcache.dll文件 亲测自己电脑Win8.1 64,可用
在PHP开发中,扩展(Extensions)是增强PHP功能的重要组件,比如`php_memcache.dll`和`php_redis.dll`就是两个非常重要的PHP扩展。 `php_memcache.dll`是PHP与Memcached缓存系统交互的扩展。Memcached是一种高性能...