YII框架中使用memcache的方法详解
发布时间 - 2026-01-11 02:36:37 点击率:次本文实例讲述了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
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);
更多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()方法生成。
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相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
# YII框架
# memcache
# Yii框架中memcache用法实例
# Yii配置与使用memcached缓存的方法
# Yii2 assets清除缓存的方法
# 深入解析PHP的Yii框架中的缓存功能
# 浅析Yii2缓存的使用
# Yii清理缓存的方法
# yii2缓存Caching基本用法示例
# YII Framework框架教程之缓存用法详解
# 简介PHP的Yii框架中缓存的一些高级用法
# Yii数据库缓存实例分析
# Yii开启片段缓存的方法
# Yii 2.0如何使用页面缓存方法示例
# 可以使用
# 程序设计
# 有什么
# 会有
# 相关内容
# 多个
# 你在
# 当你
# 感兴趣
# 这就
# 也很
# 可以通过
# 给大家
# 只有一个
# 不加
# 更多关于
# 都做
# 即为
# 很方便
# 你会发现
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
js实现点击每个li节点,都弹出其文本值及修改
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
再谈Python中的字符串与字符编码(推荐)
高性能网站服务器配置指南:安全稳定与高效建站核心方案
微信小程序 HTTPS报错整理常见问题及解决方案
canvas 画布在主流浏览器中的尺寸限制详细介绍
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
Laravel Docker环境搭建教程_Laravel Sail使用指南
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Swift开发中switch语句值绑定模式
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
如何有效防御Web建站篡改攻击?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
如何自定义建站之星网站的导航菜单样式?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何快速搭建支持数据库操作的智能建站平台?
JS经典正则表达式笔试题汇总
Laravel用户密码怎么加密_Laravel Hash门面使用教程
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
如何在万网主机上快速搭建网站?
香港服务器租用费用高吗?如何避免常见误区?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
java中使用zxing批量生成二维码立牌
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel怎么调用外部API_Laravel Http Client客户端使用
java获取注册ip实例
如何用搬瓦工VPS快速搭建个人网站?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
北京网站制作的公司有哪些,北京白云观官方网站?
Python正则表达式进阶教程_复杂匹配与分组替换解析
无锡营销型网站制作公司,无锡网选车牌流程?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
jQuery 常见小例汇总
JS实现鼠标移上去显示图片或微信二维码
Java垃圾回收器的方法和原理总结
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
JavaScript如何操作视频_媒体API怎么控制播放
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
如何在Windows虚拟主机上快速搭建网站?

