来源:自学PHP网 时间:2017-08-04 10:52 作者: 阅读:次
[导读] 这篇文章主要介绍了YII框架中使用memcache的方法,结合实例形式分析了Yii框架中使用memcache的配置、用法与注意事项,需要的朋友可以参考下...
本文实例讲述了YII框架中使用memcache的方法。分享给大家供大家参考,具体如下: yii中可以很方便的使用memcache 一.配置 在main.php的components中加入cache配置 array( 'components'=>array( 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array( 'host'=>'server1', 'port'=>11211, 'weight'=>60, ), array( 'host'=>'server2', 'port'=>11211, 'weight'=>40, ), ), ), ), ) 说明: 1)class指明所有缓存类,CMemCache即为memcache 二.使用 调用memcache的方法也很简单 $key = 'people'; $value = json_encode(array('name'=>'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扩展不进行额外的"小动作"。 'cache' => array( 'class' => 'system.caching.CMemCache', 'servers' => array( array('host' => '127.0.0.1', 'port' => 11211)), 'keyPrefix' => '', 'hashKey' => false, 'serializer' => false) 其中: keyPrefix:key的前缀,默认用CApplication::getId()方法生成。 将这些都置空,扩展的行为就同原生Memcache一致了。 四.更多memcache方法调用 yii的扩展中,只有memcache的最常用操作,并没有类似原生memcache的decrement和increment等操作。如果想要作用这些方法怎么办呢?可以使用扩展中的getMemCache方法获得原生memcache对像,然后就可以使用原生方法了。 $mem = Yii::app()->cache->getMemCache(); $res = $mem->decrement($key); 使用原生方法时,最好设置上文(三)中提到的配置,不然同时使用yii的扩展方法和memcache的原生方法会带来麻烦。 更多关于Yii相关内容感兴趣的读者可查看本站专题:、、、、、 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com