php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)

thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkphp缓存方法,对thinkphp缓存方法感兴趣的朋友一起学习吧

系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache)

对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式。

'DATA_CACHE_SUBDIR'=>true

还可以设置哈希目录的层次,例如

'DATA_PATH_LEVEL'=>2

就可以根据缓存标识的哈希自动创建多层子目录来缓存。

S方法支持缓存有效期,在很多情况下,可能我们并不需要有效期的概念,或者使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存方法F方法。F方法只能用于缓存简单数据类型,不支持有效期和缓存对象,使用如下:

//快速缓存Data数据,默认保存在DATA_PATH目录下面

F('data',$data);

//快速缓存Data数据,保存到指定的目录

F('data',$data,TEMP_PATH);

F('user/data',$data);

//删除缓存数据

F('data',null);

//获取缓存数据

$data=F('data');

配置文件config.php

//动态缓存,缓存文件存在于\Runtime\Temp

'DATA_CACHE_TYPE'=>'file',

'DATA_CACHE_TIME'=>'3600',

//'DATA_CACHE_SUBDIR'=>true,//开启子目录

//'DATA_CACHE_LEVEL'=>3,//设置子目录的层次

Action文件:

function view(){

//缓存

//$cache=Cache::getInstance('缓存方式','缓存参数');

//$cache=Cache::getInstance('Xcache',array('expire'=>60));

//$cache->set('名字','值');或者$cache->name='值';

//$value=$cache->get('名字');或者$value=$cache->name;

//$cache->rm('名字');或者unset($cache->name);

//S('名字','数据','3600','类型')缓存快捷方法

$user=M('haodetong');

$value=S('list');

if(empty($value)){

$list=$user->select();

S('list',$list,3600);

echo '这个是直接从数据库中读取的文件';

dump($list);

}else{

echo '这个是缓存文件';

dump($value);

}

}

第一次访问时如下图:

8948c90b073161d473a62350a8de1265.gif

再次刷新后如下图:

adb6151ef5323fe5ddd97544c1473f9b.gif

下面给大家单独介绍ThinkPHP 中F 方法的快速缓存

使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存方法F方法

$path="../Public/Runtime/";

$str="asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa";

F("str/andy",$str,$path);

这样就把 $str 字符串这个内容放在了 ../Public/Runtime/str/andy.php  的文件中了

andy.php 的文件内容如下:

return 'asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa';

?>

下面一段代码是ThinkPHP缓存方法S()概述

thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法,使用示例如下:

代码如下:

// 使用data标识缓存$Data数据

S('data',$Data);  //前面的是缓存标示,后面的是缓存的数据

代码如下:

// 缓存$Data数据3600秒

S('data',$Data,3600);

代码如下:

// 删除缓存数据

S('data',NULL);  //第一个参数时缓存的标识名

代码如下:

$cache=S($cachename);//设置缓存标示

// 判断是否有这个查询缓存

if(!$cache){ //$cache 中是缓存的标示(每个查询都对应一个缓存 即 不同的查询有不同的缓存)

$cache=$video->where($map)->order($order)->limit($limit)->select();

foreach($cache as $key=>$value){

$userlist=$user->where("id=".$value['user_id'])->find();

$cache[$key]["nickname"]=$userlist['nickname'];

}

S($cachename,$cache,3600); //设置缓存的生存时间

}

S($cachename,NULL); //删除缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值