下午去经典论坛,看到一版主发了一篇关于memcached的帖子
也在本地做了一下测试,用的是windows系统。
1.下载Memcache for win32
下载地址: http://jehiah.cz/projects/memcached-win32/
选择memcached 1.2.1 for Win32 binaries (Dec 23, 2006) 是exe的程序
2.下载php_memcache.dll
下载地址: http://pecl4win.php.net/ext.php/php_memcache.dll
选择和Php版本对应的,我php版本是5.2.6的,里边没有,索性down了个5.2.1的也能用
打开php.ini文件,添加扩展extension=php_memcache.dll(没有分号)
重启apache
phpinfo看一下,现在应该有memcached的了
memcache主要应用方法:
(1) Memcache::getVersion 返回memcache的版本信息.
(2) Memcache::connect 创建一个memcache连接对象.
(3) Memcache::pconnect 创建一个memcacher持久连接对象.
(4) Memcache::close 关闭一个Memcache对象.
(5) Memcache::set 用来添加一个值.
有四个参数,第一个参数是key,第二个参数是value,第三个参数可选,表示是否压缩保存,第四个参数可选,用来设
置一个过期自动销毁的时间.
(6) Memcache::add 作用和Memcache::set方法类似.
两个方法的区别是如果Memcache::add方法的返回值为false,表示这个key已经存在,而Memcache::set方法则会直
接覆写.
(7) Memcache::get 用来获取一个值.
只有一个参数(key,在Memcache::set时设置)
(8) Memcache::replace 对一个已有的key进行覆写操作.
有四个参数,与 Memcache::set 相同.
(9) Memcache::increment 对保存的某个key中的值进行加法操作.
(10) Memcache::decremen 对保存的某个key中的值进行减法操作.
(11) Memcache::setCompressThreshold 对大于某一大小的数据进行压缩。
(12) Memcache::delete 删除一个key
有两个参数,第一个是key名称.第二个是删除延迟时间
(13) Memcache::flush 清除所有缓存的数据,但是不会削去使用的内存空间.
(14) Memcache::addServer 添加一个可供使用的服务器地址.
(15) Memcache::setServerParams 在运行时修改服务器的参数.
写个php程序测试一下:
为了做测试,连接的是远程数据库。看到的效果比较明显。
Ps:关于memcached的更多信息请咨询google。


最新回复
这种Memcache的用法存在个缺陷,从IF到$mem->set之间的代码如果需要执行的时间比较长的话,在这段时间内这个页面的请求都是不经过缓存的,比如在缓存失效的时候同时有5个请求,那么这五个请求都会执行复杂而且耗时的获取数据的操作,在获取数据操作比较简单,执行速度很快时这种情况会很罕见,但是在这个操作耗时比较长的时候,这种Race Condition就值得重视了。
下面的帖子是我对Memcache做了一点儿封装,处理了这种竞争情况。
http://bbs.phpchina.com/thread-76999-1-1.html
memcached install
memcached start
窗口不能关闭