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 相关文章推荐
提升PHP执行速度全攻略(上)
Oct 09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 PHP
php 文章采集正则代码
Dec 28 PHP
深入php list()函数的详解
Jun 05 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
Jun 21 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 PHP
PHP中foreach()用法汇总
Jul 02 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
php-fpm中max_children的配置
Mar 15 PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 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
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
php数组和链表的区别总结
2019/09/20 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
javaScript语法总结
2016/11/25 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
vue组件tabbar使用方法详解
2018/11/06 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
Python字典及字典基本操作方法详解
2018/01/30 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
如何获得EntityManager
2014/02/09 面试题
吸烟检讨书2000字
2014/02/13 职场文书
承诺书范文
2014/06/03 职场文书
服装设计师求职信
2014/06/04 职场文书
给学校的建议书400字
2015/09/14 职场文书
聘任书范文大全
2015/09/21 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers