LX_96YII 如何使用MemCache缓存
来源:互联网 发布:公司注册淘宝店铺流程 编辑:程序博客网 时间:2024/06/16 04:41
一、配置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 //添加一个值,如果已经存在,则返回false
- Memcache::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);//过期时间为6s
- echo "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问题就解决啦
阅读全文
0 0
- LX_96YII 如何使用MemCache缓存
- 如何使用memcache缓存
- YII 如何使用MemCache缓存
- php 如何使用 缓存MEMCACHE 实例
- Memcache缓存的使用
- rails使用memcache缓存session
- 使用Memcache缓存MySQL查询
- rails使用memcache缓存session
- 使用memcache建立缓存服务器
- 使用Memcache缓存MySQL查询
- Thinkphp - 缓存的使用 (Memcache)
- ruby系统使用memcache缓存
- Memcache缓存介绍和使用
- Thinkphp - 缓存的使用 (Memcache)
- 使用Memcache缓存MySQL查询
- PHP如何使用 Memcache
- 如何使用memcache
- 如何对memcache缓存服务器进行监控
- 酷酷的单词
- 各个平台的mysql重启命令
- 欢迎使用CSDN-markdown编辑器
- ios-set和get方法
- sklearn中的数据预处理
- LX_96YII 如何使用MemCache缓存
- 最简单的tab页面切换+动画
- hadoop琐碎
- Spring Boot 部署与服务配置
- laraval
- 退役后的飞机怎样处置?
- 在三台Centos虚拟机分主从机上设置SSH免密码登录
- jquery对多个相同id的赋值
- 小程序注册开发工具目录结构介绍