windows系统下Memcached的安装步骤

php相关 / 2012年08月17日 13时54分 / 11735人浏览
首先要注意自己的php版本要你所要下载的memcache扩展保持一致,如果在网上没有找到 http://museum.php.net/php5/ 可以到这个网址上找与自己php版本对应的pecl包,里面有对应的php_memcache.dll的文件 如果这上面找不到的话,就去google里搜索下,实在不行的话,就只有去网上下载源码包,使用vc6自己编译吧。注意最好是使用vc6,不然可能会出现问题。当然另一个方法就是换其它版本的php了。 我就是因为版本不对应,在配置完之后重启apache的时候,提示找不到指定模块 Memcached的安装步骤: 1.将memcached.exe放在C盘某个文件夹中,形如在c:\memcached\memcached.exe 2.在终端(也即cmd命令界面)下输入'c:\memcached\memcached.exe -d install'安装 3.再输入:'c:\memcached\memcached.exe -d start'启动。NOTE:以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。 4.将php_memcache.dll文件放到PHP目录中的ext文件夹中 5.修改你的php.ini文件,在其末尾 加入一行'extension=php_memcache.dll’ 6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功! Memcached.exe的基本设置参数: -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 显示帮助 Memcache扩展使用方法: $memcache=new Memcache; $memcacher->connect('127.0.0.1', 11211) or die ("Could not connect"); $version = $memcache->getVersion(); echo "Server's version: ".$version."\n"; $tmp_object = new stdClass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server"); echo "Store data in the cache (data will expire in 10 seconds)\n"; $get_result = $memcache->get('key'); echo "Data from the cache:\n"; var_dump($get_result); ?> 我们接下来说memcached和memcache区别 a. 网上说这个东西是一个c/s结构的软件。确实是 如果是c/s结构的话,那就说明必须有一个服务端和一个客户端 所以,server端的就是memcached,client端可以看作是php_memcache.dll 怎么说呢php_memcache.dll提供了一组函数,用来缓存,提取,删除缓存等一系列的操作,而通过这些函数,最终把数据是放到了安装有memcached服务的机器上,可以是本机,也可以是其它网络上的机器。 你可以做下这样的测试,只启用php_memcache.dll中的一些函数,对缓存进行操作,把memcached服务给停用一下,看是否能正常使用。这时候是无法使用的 所以,可以把memcached看作是服务端 php_memcached看作是客户端 b. PECL里有两个Memcached的模块,MemcacheMemcached,目前大部分PHP环境里使用的是Memcache版本,这个版本释出的比 较早,是一个原生版本,与之对应的Memcached版本则是建立在libmemcached的基础上,所以说Memcached版本的功能更全一些。 memcached相当Memcache来说版本更新 1.Memcache是原生实现的,支持OO和非OO两套接口并存。而memcached是使用libmemcached,只支持OO接口。 2.memcached还有个非常称赞的地方,就是flag不是在操作的时候设置了,而是有了一个统一的setOption()。Memcached实现了更多的memcached协议。 3.memcached支持Binary Protocol,而memcache不支持。这意味着memcached会有更高的性能。不过memcached目前还不支持长连接。 4.php的memcached与Memcache两个扩展都支持一致性hash算法,不过设置方法不太一样: Memcache 5.Memcache支持数组作为KEY,Memcached只支持字符串作为KEY 最后给大家推荐一个小工具,叫memadmin是一个查看memcached服务器的一个小工具,很强大,是用php+jquery写的 附:

保存数据

向memcached保存数据的方法有
  • add
  • replace
  • set
它们的使用方法都相同:
my $add = $memcached->add( '键', '值', '期限' );
my $replace = $memcached->replace( '键', '值', '期限' );
my $set = $memcached->set( '键', '值', '期限' );
向memcached保存数据时可以指定期限(秒)。不指定期限时,memcached按照LRU算法保存数据。 这三个方法的区别如下:
选项 说明
add 仅当存储空间中不存在键相同的数据时才保存
replace 仅当存储空间中存在键相同的数据时才保存
set 与add和replace不同,无论何时都保存

获取数据

获取数据可以使用get和get_multi方法。
my $val = $memcached->get('键');
my $val = $memcached->get_multi('键1', '键2', '键3', '键4', '键5');
一次取得多条数据时使用get_multi。get_multi可以非同步地同时取得多个键值, 其速度要比循环调用get快数十倍。

删除数据

删除数据使用delete方法,不过它有个独特的功能。
$memcached->delete('键', '阻塞时间(秒)');
删除第一个参数指定的键的数据。第二个参数指定一个时间值,可以禁止使用同样的键保存新数据。 此功能可以用于防止缓存数据的不完整。但是要注意,set函数忽视该阻塞,照常保存数据

增一和减一操作

可以将memcached上特定的键值作为计数器使用。
my $ret = $memcached->incr('键');
$memcached->add('键', 0) unless defined $ret;
增一和减一是原子操作,但未设置初始值时,不会自动赋成0。因此, 应当进行错误检查,必要时加入初始化操作。