yii中使用Memcache
来源:互联网 发布:js 事件触发target 编辑:程序博客网 时间:2024/05/27 06:51
来源:http://blog.csdn.net/qmhball/article/details/8125333
yii中可以很方便的使用memcache
一.配置
在main.php的components中加入cache配置
说明:
1)class指明所有缓存类,CMemCache即为memcache
2) 当要使用多个cache轮询时,可以给每个cache配权重(weight)。如果只有一个cache,不加这个配置就可以了。
二.使用
调用memcache的方法也很简单
更多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扩展不进行额外的"小动作"。
其中:
keyPrefix:key的前缀,默认用CApplication::getId()方法生成。
hashKey:对key进行hash操作,默认md5
serializer:value的序列化方法,默认serialize
将这些都置空,扩展的行为就同原生Memcache一致了。
四.更多memcache方法调用
yii的扩展中,只有memcache的最常用操作,并没有类似原生memcache的decrement和increment等操作。如果想要作用这些方法怎么办呢?可以使用扩展中的getMemCache方法获得原生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
2) 当要使用多个cache轮询时,可以给每个cache配权重(weight)。如果只有一个cache,不加这个配置就可以了。
二.使用
调用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);
三.问题
当你统一使用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()方法生成。
hashKey:对key进行hash操作,默认md5
serializer:value的序列化方法,默认serialize
将这些都置空,扩展的行为就同原生Memcache一致了。
四.更多memcache方法调用
yii的扩展中,只有memcache的最常用操作,并没有类似原生memcache的decrement和increment等操作。如果想要作用这些方法怎么办呢?可以使用扩展中的getMemCache方法获得原生memcache对像,然后就可以使用原生方法了。
- $mem = Yii::app()->cache->getMemCache();
- $res = $mem->decrement($key);
- yii中使用Memcache
- 在yii中使用memcache
- 在yii中使用memcache
- 在yii中使用memcache的问题
- YII memcache的使用
- yii 使用memcache
- YII 如何使用MemCache缓存
- yii中使用ueditor
- Yii中使用datepicker
- YII 中使用Ueditor
- yii中使用phpexcel
- YII中使用事务
- PHP中封装MEMCACHE常用方法基于YII框架下
- yii中yii-bootstrap的使用
- Yii 中使用 yii-bootstrap 扩展
- Yii memcache缓存
- Yii memcache缓存
- 在PHP中使用memcache
- quartz
- drools 规则文件 —— 文件构成介绍
- PCI总线驱动概要
- Eclipse 中设置JVM 内存
- Scilab文件和c语言的转换问题
- yii中使用Memcache
- WebKit资源加载进度
- anroid Remote Service 使用注意事项
- json作为客户端调用服务端说明
- android studio 编译调试 错误
- drools 规则文件 —— 语法
- WCF4.0 –- RESTful WCF Services (2) (实现增,删,改,查)
- Nginx学习之十四-GDB调试Nginx初试
- usb设备插入开机后无法识别问题