微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

YII框架中使用memcache的方法详解

本文实例讲述了YII框架中使用memcache的方法分享给大家供大家参考,具体如下:

yii中可以很方便的使用memcache

一.配置

在main.PHP的components中加入cache配置

array( 'cache'=>array( 'class'=>'cmemCache','servers'=>array( array( 'host'=>'server1','port'=>11211,'weight'=>60,),array( 'host'=>'server2','weight'=>40,)

说明:

1)class指明所有缓存类,cmemCache即为memcache 2) 当要使用多个cache轮询时,可以给每个cache配权重(weight)。如果只有一个cache,不加这个配置就可以了。

二.使用

调用memcache的方法也很简单

'ball','age'=>'male')); $expire = 10; yii::app()->cache->set($key,$value,$expire); Yii::app()->cache->get($key); Yii::app()->cache->delete($key);

更多api请参阅yii手册cmemCache部分。

三.问题

当你统一使用yii的扩展对memcache进行存取时,不会有什么问题。但现实中会有这么一种情况:你在使用yii开发后台,但前台的同学并未用yii,而是使用了原生的memcache api对数据进行操作。这时会遇到一些问题。

如上文二中的例子,你会发现,如果使用原生的memcache api,Memcache::get,用people作key是取不到值的!

原因是,yii的set对key和value都做了处理。认情况下,对key加前缀并做md5变换,对value进行serialize()。这就难怪使用Memcache::get('people')取不到值了。

解决

简单的方法,可以通过配置,让yii的memcache扩展不进行额外的"小动作"。

array( 'class' => 'system.caching.cmemCache','servers' => array( array('host' => '127.0.0.1','port' => 11211)),'keyPrefix' => '','hashKey' => false,'serializer' => false)

其中:

默认用CApplication::getId()方法生成默认md5 方法,认serialize

将这些都置空,扩展的行为就同原生Memcache一致了。

四.更多memcache方法调用

yii的扩展中,只有memcache的最常用操作,并没有类似原生memcache的decrement和increment等操作。如果想要作用这些方法怎么办呢?可以使用扩展中的getMemCache方法获得原生memcache对像,然后就可以使用原生方法了。

cache->getMemCache(); $res = $mem->decrement($key);

使用原生方法时,最好设置上文(三)中提到的配置,不然同时使用yii的扩展方法和memcache的原生方法会带来麻烦。

更多关于Yii相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐