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

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

具体操作如下所示:

(图文教程推荐:yii

一、配置memcache server 服务器

1、下载memcached软件包,下载地址:

http://pan.baidu.com/s/1boAnghp

解压,把memcached.exe放到随意一个地方,比如:d:/memcached/下(我解压到了我的wampserver的bin目录下与php目录同级)。

2、windows+R快捷键输入cmd, 在命令行中输入一下代码,切换到memcache.exe的目录下:

1d6798e555534f1b653a66e5b3f6efa.png

3、输入如下代码安装memcache.exe: memcached.exe -d install

299809c8d8fcd8f751db5324b0d88b1.png

4、输入memcached.exe -d start启动

d4af9fc5457f4f38cc02105f2e0bdee.png

配置成功

//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' => 'yiicachingMemCache',    'servers' => [        [            'host' => 'localhost',            'port' => 11211,            'weight' => 100,        ],        [            'host' => 'localhost',            'port' => 11211,            'weight' => 50,        ],    ],],

现在就可以在你的控制器的action方法中使用如下代码了:

//缓存MemCache $key='key';$value='this is the value';
Yii::$app->cache->set($key,$value);echo "lixian";echo Yii::$app->cache->get($key);exit();


但是当你使用过期时间时即:

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自带的yiicachingMemCache, 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缓存的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/81789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月15日 23:32:14
下一篇 2025年11月16日 00:00:43

相关推荐

  • 探究最佳响应式布局框架:竞争激烈!

    响应式布局框架大比拼:谁是最佳选择? 随着移动设备的普及和多样化,网页的响应式布局变得越来越重要。为了满足用户的不同设备和屏幕尺寸,在设计和开发网页时采用响应式布局框架是必不可少的。然而,面对众多的框架选择,我们不禁要问:哪个是最佳选择? 以下将对目前比较流行的三种响应式布局框架进行比较评价,它们分…

    2025年12月24日
    000
  • 深入学习响应式布局框架:适合初学者到专家的详尽指南

    响应式布局框架解析:从初学者到专家的必备指南 随着移动设备的普及和多样化,响应式布局成为了现代Web设计的必备技能。响应式布局框架以其简单、灵活和可维护的特点,成为了开发者们的首选工具。然而,对于初学者来说,学习和理解响应式布局框架可能会感到有些困惑。本文将从初学者到专家,为您提供一个详细的指南,帮…

    2025年12月24日
    000
  • 选择最适合您的响应式布局框架:综合评估不同工具

    响应式设计是指网页可以根据不同设备的屏幕尺寸和分辨率进行自适应的布局,以确保在各种设备上都能提供良好的浏览体验。为了方便开发者实现响应式布局,出现了许多优秀的框架和工具。本文将汇总一些主流的响应式布局框架,并提供具体的代码示例,帮助读者选择最适合自己的工具。 Bootstrap(https://ge…

    2025年12月24日 好文分享
    000
  • 探索五种流行的响应式设计框架

    随着移动设备的广泛应用和互联网的普及,响应式布局已经成为了网页设计的重要概念。响应式布局能够根据用户使用的设备(如手机、平板、电脑等)不同的屏幕尺寸和分辨率,自动适应调整网页的布局和样式,提供更好的用户体验。 为了快速实现响应式布局,开发者可以使用现成的响应式布局框架。这些框架提供了一系列的CSS和…

    2025年12月24日
    000
  • 了解Ajax框架:探索常见的五种框架

    了解Ajax框架:探索常见的五种框架,需要具体代码示例 引言:在现代Web应用开发中,Ajax是必不可少的技术之一。它以其支持异步数据交互,提升用户体验等特点,成为了前端开发中不可或缺的一部分。为了更好地了解和掌握Ajax框架,本文将介绍五种常见的Ajax框架,并提供具体的代码示例,帮助读者深入了解…

    2025年12月24日
    000
  • 改进用户体验:减少回退和重绘的有效策略

    提升用户体验:有效减少回流和重绘的方法,需要具体代码示例 用户体验是一个网站或应用程序成功的关键因素之一。为了保证用户的流畅体验和高效操作,我们需要注重减少回流(Refow)和重绘(Repaint)的次数,并尽量减少它们对性能的影响。本文将介绍几种有效的方法,同时提供相应的代码示例。 合理使用CSS…

    2025年12月24日
    000
  • 解析网页设计中CSS框架和排版的作用与优点

    在如今的网页设计领域,排版和CSS框架扮演着至关重要的角色。而在这种快节奏的工作中,更快速、更高效地完成任务显得尤为关键,这就是排版和CSS框架的优势所在。本文将会探讨如何使用这些工具来优化网页设计,同时提供一些实际的代码篇例,以便读者更好地理解。 一、CSS框架的作用和优势 CSS框架是为了能够更…

    2025年12月24日
    000
  • 揭开提高手机网页开发效率的秘密武器:了解手机CSS框架的全貌

    在如今移动互联网盛行的时代,手机网页开发已经成为一项必要的技能。相比于传统PC端网页,手机网页的开发要面临更多的挑战和限制。因此,使用一些高效的开发工具和技巧可以大大提高开发效率和质量。其中之一就是手机CSS框架。本文将介绍手机CSS框架的基本概念、常用的手机CSS框架以及具体代码示例,希望能对大家…

    2025年12月24日
    000
  • Yii框架中如何使用CSS样式?

    如何在Yii框架中引用CSS样式? Yii框架是一个高性能、灵活性强的PHP框架。在开发网站或Web应用程序时,样式表(CSS)是非常重要的一部分,它可以使网站的外观更加美观、统一。在Yii框架中,我们可以通过简单的步骤来引用CSS样式,并让网页中的元素应用这些样式。 步骤1:创建CSS样式文件首先…

    2025年12月24日
    000
  • 网页设计css样式代码大全,快来收藏吧!

    减少很多不必要的代码,html+css可以很方便的进行网页的排版布局。小伙伴们收藏好哦~ 一.文本设置    1、font-size: 字号参数  2、font-style: 字体格式 3、font-weight: 字体粗细 4、颜色属性 立即学习“前端免费学习笔记(深入)”; color: 参数 …

    2025年12月24日
    000
  • css中id选择器和class选择器有何不同

    之前的文章《什么是CSS语法?详细介绍使用方法及规则》中带了解CSS语法使用方法及规则。下面本篇文章来带大家了解一下CSS中的id选择器与class选择器,介绍一下它们的区别,快来一起学习吧!! id选择器和class选择器介绍 CSS中对html元素的样式进行控制是通过CSS选择器来完成的,最常用…

    2025年12月24日
    000
  • 如何清除css缓存

    在css中,可以使用content属性来清除css缓存,只需要在meta标签里添加“CONTENT=”no-cache/0″”即可。content属性可设置或者返回meta元素content属性值。该属性指定了meta信息的内容。 本教程操作环境:windows7系统、HTM…

    2025年12月24日
    000
  • 常见的css框架有哪些

    常见css框架:1、Bootstrap框架;2、Foundation框架,一个专业的前端框架;3、Pure框架,优点是渲染快;4、Skeleton框架;5、99lime HTML KickStart框架,适合网站快速开发;6、Kube框架。 本教程操作环境:windows7系统、CSS3版、Dell…

    2025年12月24日 好文分享
    000
  • 15 个优秀的响应式 Web 设计 HTML 和 CSS 框架

    【推荐教程:CSS视频教程 】 响应式 Web 设计旨在为各种设备(从台式机显示器到手机)提供最佳的浏览体验。本文汇总了一些优秀的响应式 Web 设计 HTML 和 CSS 框架。这些框架都是开源的并免费的。 对响应式 Web 框架进行比较并不那么容易。有的框架适合设计更快、更精简网站的某些功能,而…

    2025年12月24日 好文分享
    000
  • 最受欢迎的10大CSS框架

    web 开发工程师在开发页面样式的时候需要花费大量的时间开发,其中最头疼的还是浏览器的兼容性问题,最省事的是使用 css 框架,幸运的是一些大神编写了一套精美的 css 框架并开源出来,那么有哪些不错的 css 框架呢? 我收集了一些资料和数据来和大家讨论,下面我就说说 Github 上 star …

    好文分享 2025年12月24日
    000
  • php约瑟夫问题如何解决

    “约瑟夫环”是一个数学的应用问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。…

    好文分享 2025年12月24日
    000
  • CSS新手整理的有关CSS使用技巧

    [导读]  1、不要使用过小的图片做背景平铺。这就是为何很多人都不用 1px 的原因,这才知晓。宽高 1px 的图片平铺出一个宽高 200px 的区域,需要 200*200=40, 000 次,占用资源。  2、无边框。推荐的写法是     1、不要使用过小的图片做背景平铺。这就是为何很多人都不用 …

    好文分享 2025年12月23日
    000
  • CSS中实现图片垂直居中方法详解

    [导读] 在曾经的 淘宝ued 招聘 中有这样一道题目:“使用纯css实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。”当然出题并不是随意,而是有其现实的原因,垂直居中是 淘宝 工作中最 在曾经的 淘宝UED 招聘 中有这样一道题目: “使用纯CSS实现未知尺寸…

    好文分享 2025年12月23日
    000
  • CSS派生选择器

    [导读] 派生选择器通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁。在 css1 中,通过这种方式来应用规则的选择器被称为上下文选择器 (contextual selectors),这是由于它们依赖于上下文关系来应 派生选择器 通过依据元素在其位置的上下文关系来定义样式,你可以使标…

    好文分享 2025年12月23日
    000
  • CSS 基础语法

    [导读] css 语法 css 规则由两个主要的部分构成:选择器,以及一条或多条声明。selector {declaration1; declaration2;     declarationn }选择器通常是您需要改变样式的 html 元素。每条声明由一个属性和一个 CSS 语法 CSS 规则由两…

    2025年12月23日
    300

发表回复

登录后才能评论
关注微信