ThinkPHP 3.1快速入门:缓存

在项目中,合理的使用缓存对性能有较大的帮助。ThinkPHP提供了方便的缓存方式,包括数据缓存、静态缓存和查询缓存等,支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache在内的动态数据缓存类型,以及17813.html">可定制的静态缓存规则,并提供了快捷方法进行存取操作。

数据缓存

在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,3.1版本推荐的数据缓存方法是cache方法,基本的用法是:

1 缓存初始化

cache(
array('type'=>'xcache','expire'=>60));缓存初始化可以支持的参数根据不同的缓存方式有所区别,常用的参数是:
expire 缓存有效期(时间为秒) prefix 缓存标识前缀 type 缓存类型

核心版本只有">File缓存方式的支持,其他的缓存方式支持需要下载单独的缓存驱动,并放入系统目录的Extend/Driver/Cache/下面,否则会出现不支持缓存类型的错误提示。有些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数:

cache(array('type'=>'memcache','host'=>'
192.168.1.10','port'=>'11
211','prefix'=>'think','expire'=>60));对于全局的缓存方式,一般我们建议添加prefix(缓存前缀)参数用以区分不同的应用,以免混淆。

2 缓存设置

cache('a',$value);会按照缓存初始化时候的参数进行缓存数据,也可以在缓存设置的时候改变参数,例如: cache('a',$value,300);// 缓存数据300秒甚至改变之前的缓存方式或者更多的参数: cache('a',$value,array('type'=>'file','expire'=>300));// 采用文件方式缓存数据300秒如果你在缓存设置的时候采用上面的数组方式传入参数的话,会影响到后面的缓存存取。

3 缓存读取

$value = cache('a');缓存读取的是
前面缓存设置的值,这个值会受缓存初始化或者缓存设置的时候传入的参数影响。

如果缓存标识不存在或者已
经过期,则返回false,否则返回缓存值。

4 缓存删除

删除缓存标识为name的缓存数据。

如果要切换缓存方式,可以再次进行缓存初始化操作或者使用下面的方式: 如果你设置了缓存前缀的话,对应的缓存操作只是对应该缓存前缀标识的,不会影响其他的缓存。
数据缓存可以支持缓存队列,简单的说就是可以限制缓存的数量,只需要在初始化的时候指定length参数:

cache(array('type'=>'xcache','length'=>100,'expire'=>60));设置了length参数后,系统只会缓存最近的100条缓存数据。

时间: 2024-08-31 23:36:59

ThinkPHP 3.1快速入门:缓存的相关文章

ThinkPHP 3.1快速入门:连贯操作

上一篇我们详细描述了查询语言的用法,但是查询语言仅仅解决了查询或者操作条件的问题,更多的配合还需要使用模型提供的连贯操作方法. 介绍 连贯操作可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作,也是ThinkPHP的ORM中的一个亮点.使用也比较简单, 假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 ,代码如下: $User->where('status=1')->order('create_time')->limit(1

ThinkPHP 3.1快速入门:基础

ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持. 目录结构 ThinkPHP最新版本可以在官方网站(http://thinkphp.cn/down/framework.html)或者Github(https://github.com/liu21st/thinkphp/do

ThinkPHP 3.1快速入门:数据分页

我们已经了解了如何进行数据查询,今天我们来学习下如何对数据进行分页以及显示. 获取分页类 ThinkPHP提供了数据分页的扩展类库Page,可以在http://www.thinkphp.cn/extend/241.html下载,或者下载官方的完整扩展包(http://www.thinkphp.cn/down/253.html)里面也已经包含分页扩展类了.把解压后的Page.class.php放入ThinkPHP/Extend/Library/ORG/Util/(如果没有请手动创建)目录下面.当然

ThinkPHP 3.1快速入门:命名范围

在应用http://www.aliyun.com/zixun/aggregation/17799.html">开发过程中,使用最多的操作还是数据查询操作,凭借ThinkPHP的连贯操作的特性,可以使得查询操作变得更优雅和清晰,然而新版的命名范围功能,则是给模型操作定义了一系列的查询封装,让你更方便的查询数据. 定义属性 要使用命名范围功能,主要涉及到模型类的_scope属性定义和scope连贯操作方法的使用.我们首先定义_scope属性: class NewsModel extends M

ThinkPHP 3.1快速入门:行为

行为(Behavior)是ThinkPHP扩展机制中比较关键的一项扩展,行为既可以独立调用,也可以绑定到某个标签中进行侦听,官方提出的CBD模式中行为也占了主要的地位,可见行为在ThinkPHP框架中意义非凡.这里指的行为是一个比较抽象的概念,你可以想象成在应用执行过程中的一个动作或者处理,在框架的执行流程中,各个位置都可以有行为产生,例如路由检测是一个行为,静态缓存是一个行为,用户权限检测也是行为,大到业务逻辑,小到浏览器检测.多语言检测等等都可以当做是一个行为,甚至说你希望给你的网站用户的第

ThinkPHP 3.1快速入门:查询语言

上一篇中我们掌握了基本的数据CURD方法,但更多的情况下面,由于业务逻辑的差异,CURD操作往往不是那么简单,尤其是复杂的业务逻辑下面,这也是ActiveRecord模式的不足之处.ThinkPHP的查询语言配合连贯操作可以很好解决复杂的业务逻辑需求,本篇我们就首先来深入了解下框架的查询语言. 介绍 ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到where方法等连贯操作即可,无论是采用什么数据库,你几乎采用一样的查询方法(

ThinkPHP 3.1快速入门:调试

本篇我们来全面了解下如何在ThinkPHPhttp://www.aliyun.com/zixun/aggregation/17799.html">开发过程中进行调试工作. 调试模式 说到调试,我们可能第一个想到的就是调试模式,没错,ThinkPHP也有专门为开发过程而设置的调试模式,ThinkPHP的调试模式与众不同,会牺牲一定的执行效率,但带来的方便和除错功能非常值得. 我们强烈建议ThinkPHP开发人员在开发阶段始终开启调试模式(直到正式部署后关闭调试模式),方便及时发现隐患问题和分

ThinkPHP 3.1快速入门:变量输出

在上一章我们了解了如何通过assign方法把变量赋值到模板变量,这一篇我们来详细了解下如何在模板中使用标签输出模板变量.注意,本篇的描述仅针对使用内部模板引擎的情况,如果你使用了Smarty或者其他模板引擎,请参考其相关的变量输出语法. 变量输出 变量输出的方法很简单,例如,在控制器中我们给模板变量赋值: $http://www.aliyun.com/zixun/aggregation/11696.html">name = ' ThinkPHP';$this->assign('nam

ThinkPHP 3.1快速入门:自动验证

自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 验证规则 数据验证可以进行http://www.aliyun.com/zixun/aggregation/18278.html">数据类型.业务规则.安全判断等方面的验证操作.数据验证有两种方式:静态方式:在模型类里面通过$_validate属性定义验证规则.动态方式:使用模型类的validate方法动态创建自动验证规则.无论是什么方式,验证规则的定义是统一的规则,定义格式为