关闭

在yii中使用memcache的问题

637人阅读 评论(0) 收藏 举报

在yii中使用memcache

yii中可以很方便的使用memcache

一.配置
在main.php的components中加入cache配置
  1. array(  
  2.     'components'=>array(  
  3.   
  4.         'cache'=>array(  
  5.             'class'=>'CMemCache',  
  6.             'servers'=>array(  
  7.                 array(  
  8.                     'host'=>'server1',  
  9.                     'port'=>11211,  
  10.                     'weight'=>60,  
  11.                 ),  
  12.                 array(  
  13.                     'host'=>'server2',  
  14.                     'port'=>11211,  
  15.                     'weight'=>40,  
  16.                 ),  
  17.             ),  
  18.         ),  
  19.     ),  
  20. )  
说明:
1)class指明所有缓存类,CMemCache即为memcache
2) 当要使用多个cache轮询时,可以给每个cache配权重(weight)。如果只有一个cache,不加这个配置就可以了。

二.使用

调用memcache的方法也很简单
  1. $key = 'people';   
  2. $value = json_encode(array('name'=>'ball', 'age'=>'male'));   
  3. $expire = 10;   
  4. yii::app()->cache->set($key, $value, $expire);   
  5. Yii::app()->cache->get($key);   
  6. 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扩展不进行额外的"小动作"。
  1. 'cache' => array(      
  2.     'class' => 'system.caching.CMemCache',   
  3.     'servers' => array( array('host' => '127.0.0.1', 'port' => 11211)),  
  4.     'keyPrefix' => '',   
  5.     'hashKey' => false,   
  6.     'serializer' => false)   
其中:
keyPrefix:key的前缀,默认用CApplication::getId()方法生成。
hashKey:对key进行hash操作,默认md5
serializer:value的序列化方法,默认serialize
将这些都置空,扩展的行为就同原生Memcache一致了。

四.更多memcache方法调用
yii的扩展中,只有memcache的最常用操作,并没有类似原生memcache的decrement和increment等操作。如果想要作用这些方法怎么办呢?可以使用扩展中的getMemCache方法获得原生memcache对像,然后就可以使用原生方法了。
  1. $mem = Yii::app()->cache->getMemCache();  
  2. $res = $mem->decrement($key);  
使用原生方法时,最好设置上文(三)中提到的配置,不然同时使用yii的扩展方法和memcache的原生方法会带来麻烦。
文章乃参考、转载其他博客所得,仅供自己学习作笔记使用!!!

0
0
查看评论

PHP中使用memcache存储session的三种配置方法

原文地址:http://blog.csdn.net/clyde_coco/article/details/52182626#comments 1、直接修改php.ini配置文件  代码如下: session.save_handler = memcache //设置session的储存方...
  • pangchengyong0724
  • pangchengyong0724
  • 2016-08-25 15:14
  • 947

Yii1.1 CHttpSession 的session属性配置项

本文记录下main.php中session的配置选项,仅做记录,因为Yii本身的session,已经封装的很强悍,但是过于强悍,也不免丢失了很多细节。 详细文档请参考:http://www.yiiframework.com/doc/api/1.1/CDbHttpSession // prot...
  • liruxing1715
  • liruxing1715
  • 2015-12-31 12:32
  • 2592

在yii中使用memcache

yii中可以很方便的使用memcache 一.配置 在main.php的components中加入cache配置 array( 'components'=>array( 'cache'=>array( ...
  • qmhball
  • qmhball
  • 2012-10-29 17:51
  • 14075

YII 如何使用MemCache缓存

一、配置memcache server 服务器 1.下载memcached软件包,下载地址:http://pan.baidu.com/s/1boAnghp 解压,把memcached.exe放到随意一个地方,比如:d:/memcached/下(我解压到了我的wampserver的bin目录下与php...
  • LX_96
  • LX_96
  • 2016-07-29 17:46
  • 1863

PHP框架Yii系列教程(四):使用Memcache保存会话

1环境准备 安装Memcached服务端: yum -y installmemcached.x86_64   安装PHP-Memcache扩展: yum -y installphp-pecl-memcache.x86_64   查看PHP-Memcache扩展是否安...
  • dc_726
  • dc_726
  • 2013-04-28 21:23
  • 11972

在yii中使用memcache

yii中可以很方便的使用memcache一.配置 在main.php的components中加入cache配置
  • shaerdong
  • shaerdong
  • 2014-08-29 13:26
  • 1986

Yii在Web分布式下将Session存储到Memcached

当网站的访问越来越大的时候一台机器无法支持迸发,或都是为了做到去单点,都需要在后端搭建一个集群来处理用户的请求,由于传统的PHP Session是文件级的存储,那么如果一个用户在第一次登录的时候这个Session文件存在 A 服务器上,而第二次的时候被分到了B 服务器上,则又认为他没有登录了(当然配...
  • liangpz521
  • liangpz521
  • 2014-10-27 14:33
  • 1121

yii中使用Memcache

来源:http://blog.csdn.net/qmhball/article/details/8125333 yii中可以很方便的使用memcache 一.配置 在main.php的components中加入cache配置 [php] view plain...
  • zlging309
  • zlging309
  • 2013-07-19 17:19
  • 366

memcache具体使用

memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。很多大型网站都使用了memcached做缓存,下面我将做详细的介绍。 一、memcache简介及安装 1.简介:Memc...
  • zls986992484
  • zls986992484
  • 2016-10-05 11:43
  • 1356

yii2中memcache缓存时间无效的解决办法

一、我们配置memcache 在main.php配置文件中 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host...
  • ldTrueLove
  • ldTrueLove
  • 2016-11-23 12:07
  • 857
    个人资料
    • 访问:118093次
    • 积分:2187
    • 等级:
    • 排名:千里之外
    • 原创:65篇
    • 转载:212篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论