ThinkPHP框架中使用Memcached缓存数据的方法


Posted in PHP onMarch 31, 2018

本文实例讲述了ThinkPHP框架中使用Memcached缓存数据的方法。分享给大家供大家参考,具体如下:

ThinkPHP默认使用文件缓存数据,支持Memcache等其他缓存方式,有两个PHP扩展:Memcache和Memcached,Memcahe官方有说明,主要说一下Memcached。

相对于PHP Memcache,php Memcached是基于原生的c的libmemcached的扩展,更加完善,建议替换为php memcached。

版本3.2.2开始内置了Memcached驱动(ThinkPHP/Library/Think/Cache/Driver/Memcached.class.php),但是文档中并没有说明用法,通过查看源码配置并测试成功。

有个bug至今未修复,就是过期时间为0的问题,理论上应该是永久缓存,但是驱动中未做处理,会马上过期,set方法修改如下

public function set($name, $value, $expire = null) {
  N('cache_write',1);
  if(is_null($expire)) {
   $expire = $this->options['expire'];
  }
  $name = $this->options['prefix'].$name;
  if (empty($expire))
   $time = 0;
  else
   $time = time() + $expire;
  if($this->handler->set($name, $value, $time)) {
   if($this->options['length']>0) {
    // 记录缓存队列
    $this->queue($name);
   }
   return true;
  }
  return false;
 }

在配置文件config.php中添加

//缓存配置
 'DATA_CACHE_TYPE' => 'Memcached',
 'MEMCACHED_SERVER' => array(
  array('127.0.0.1', 11211, 0)
 ),

驱动中是调用:

Memcached::addServers(array)

可以添加多个缓存服务器

还有一个配置项是 MEMCACHED_LIB,调用的是:

Memcached::setOptions(array)

具体选项可参考PHP中文手册

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
怎样在UNIX系统下安装MySQL
Oct 09 PHP
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
php 异常处理实现代码
Mar 10 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
PHP技术开发技巧分享
Mar 23 PHP
php 操作调试的方法
Jul 12 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
PHPTree――php快速生成无限级分类
Mar 30 #PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 #PHP
PHP实现动态删除XML数据的方法示例
Mar 30 #PHP
PHP实现动态添加XML中数据的方法
Mar 30 #PHP
PHP实现动态创建XML文档的方法
Mar 30 #PHP
php实现微信模板消息推送
Mar 30 #PHP
Mac系统下安装PHP Xdebug
Mar 30 #PHP
You might like
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
PHP基础之运算符的使用方法
2013/04/28 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
python中二维阵列的变换实例
2014/10/09 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
python自动zip压缩目录的方法
2015/06/28 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Python callable内置函数原理解析
2020/03/05 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
毕业自我鉴定怎么写
2014/03/25 职场文书
三好学生事迹材料
2014/12/24 职场文书
商务司机岗位职责
2015/04/10 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
JavaScript函数柯里化
2021/11/07 Javascript