您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 黄石分类信息网,免费分类信息发布

Yii框架如何正确使用MemCache缓存

2024/5/29 16:52:03发布31次查看
具体操作如下所示:
(图文教程推荐:yii)
一、配置memcache server 服务器
1、下载memcached软件包,下载地址:
http://pan.baidu.com/s/1boanghp
解压,把memcached.exe放到随意一个地方,比如:d:/memcached/下(我解压到了我的wampserver的bin目录下与php目录同级)。
2、windows+r快捷键输入cmd, 在命令行中输入一下代码,切换到memcache.exe的目录下:
3、输入如下代码安装memcache.exe: memcached.exe -d install
4、输入memcached.exe -d start启动
配置成功
//memcache常用的函数:memcache::add //添加一个值,如果已经存在,则返回falsememcache::addserver // 添加一个可供使用的服务器地址memcache::close //关闭一个memcache对象memcache::connect // 创建一个memcache对象memcache_debug // 控制调试功能memcache::decrement // 对保存的某个key中的值进行减法操作memcache::delete //删除一个key值memcache::flush // 清除所有缓存的数据memcache::get //获取一个key值memcache::getextendedstats //获取进程池中所有进程的运行系统统计memcache::getserverstatus// 获取运行服务器的参数memcache::getstats //返回服务器的一些运行统计信息memcache::getversion //返回运行的memcache的版本信息memcache::increment //对保存的某个key中的值进行加法操作memcache::pconnect // 创建一个memcache的持久连接对象memcache::replace //对一个已有的key进行覆写操作memcache::set //添加一个值,如果已经存在,则覆写memcache::setcompressthreshold //对大于某一大小的数据进行压缩memcache::setserverparams //在运行时修改服务器的参数
二、安装php_memcache.dll扩展
1、首先下载符合你的php版本的php_memcache.dll扩展
地址:
http://pan.baidu.com/s/1skjnzil
2、复制张贴在你的php/ext文件夹里
3、在php.ini里面添加如下代码,导入扩展:
extension=php_memcache.dll
三、yii里面的配置
1.如果你用的是基础框架:打开config/web.php
如果你用的是高级框架:打开config/main.php
添加如下代码:
'cache' => [ 'class' => 'yii\caching\memcache', 'servers' => [ [ 'host' => 'localhost', 'port' => 11211, 'weight' => 100, ], [ 'host' => 'localhost', 'port' => 11211, 'weight' => 50, ], ],],
现在就可以在你的控制器的action方法中使用如下代码了:
//缓存memcache $key='key';$value='this is the value';<pre name="code" class="php">yii::$app->cache->set($key,$value);echo "lixian";echo yii::$app->cache->get($key);exit();
</pre><pre>
但是当你使用过期时间时即:
yii::$app->cache->set($key,$value,6);//过期时间为6secho "lixian";echo yii::$app->cache->get($key);exit();
就输出不了了,这是该框架自身的一个bug,解决办法如下:
在yii2使用memcache前根据文档配置好相应的参数,在使用memcache(非memcached)过程中会发现 yii::$app->cache->set('key','value'); 当这句话没有设置有效时间为多少秒时,可以正常获取到缓存中键为key的值,但表示此key不过期。
当设置了有效时间时, yii::$app->cache->set('key','value',60); 比如60秒,就会出现取不到key对应的value值,网上和论坛里搜了搜,没有找到解决办法,也有很多phper遇到这类似的问题。所以特意去看了看底层代码,引用的memcache类为yii2自带的yii\caching\memcache, yii::$app->cache->set('key','value') 这句代码会自动调用memcache类下的setvalue方法来设置缓存,所以问题也许就出现在这儿了。
后面经过测试,发现这个方法最后一句 return $this->usememcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $expire) 的问题,将这句代码改为 return $this->usememcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $duration) 后,再测试发现问题已经解决。
原因则是这句return代码里使用memcache时调用的 $this->_cache->set($key, $value, 0, $expire) ,相当于 $mem = new memcache();$mem->set($key,$value,0,$expire); 这里最关键的一点是:memcache要设置的时间的含义是有效时间为多少秒,memcached要设置的时间的含义是在哪一秒到期(等效于time()+$duration),所以发现问题所在之后将原来代码里的第二个$expire改成$duration问题就解决了。
以上就是yii框架如何正确使用memcache缓存的详细内容。
黄石分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录