前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在yii中使用memcache

在yii中使用memcache

作者头像
跑马溜溜的球
发布2020-12-07 15:25:10
4230
发布2020-12-07 15:25:10
举报
文章被收录于专栏:日积月累1024

yii中可以很方便的使用memcache

一.配置 在main.php的components中加入cache配置

代码语言:javascript
复制
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 2) 当要使用多个cache轮询时,可以给每个cache配权重(weight)。如果只有一个cache,不加这个配置就可以了。 二.使用 调用memcache的方法也很简单

代码语言:javascript
复制
$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扩展不进行额外的"小动作"。

代码语言:javascript
复制
'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()方法生成。 hashKey:对key进行hash操作,默认md5 serializer:value的序列化方法,默认 serialize 将这些都置空,扩展的行为就同原生 Memcache一致了。 四.更多memcache方法调用 yii的扩展中,只有memcache的最常用操作,并没有类似原生memcache的decrement和increment等操作。如果想要作用这些方法怎么办呢?可以使用扩展中的 getMemCache方法获得原生memcache对像,然后就可以使用原生方法了。

代码语言:javascript
复制
$mem = Yii::app()->cache->getMemCache();
$res = $mem->decrement($key);

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012/10/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档