緩存

概述

ThinkPHP采用think\Cache類(lèi)提供緩存功能支持。

版本 新增功能
5.0.11 緩存設(shè)置方法有效期支持指定過(guò)期時(shí)間(DateTime
5.0.2 增加remember方法

設(shè)置

緩存支持采用驅(qū)動(dòng)方式,所以緩存在使用之前,需要進(jìn)行連接操作,也就是緩存初始化操作。

$options = [
    // 緩存類(lèi)型為File
    'type'  =>  'File', 
    // 緩存有效期為永久有效
    'expire'=>  0, 
    //緩存前綴
    'prefix'=>  'think',
     // 指定緩存目錄
    'path'  =>  APP_PATH.'runtime/cache/',
];
Cache::connect($options);

或者通過(guò)定義配置參數(shù)的方式,在應(yīng)用配置文件中添加:

'cache'  => [
    'type'   => 'File',
    'path'   => CACHE_PATH,
    'prefix' => '',
    'expire' => 0,
],

支持的緩存類(lèi)型包括file、memcache、wincache、sqlite、redis和xcache。

緩存參數(shù)根據(jù)不同的緩存方式會(huì)有所區(qū)別,通用的緩存參數(shù)如下:

參數(shù) 描述
type 緩存類(lèi)型
expire 緩存有效期 (默認(rèn)為0 表示永久緩存)
prefix 緩存前綴(默認(rèn)為空)

使用

緩存初始化之后,就可以進(jìn)行相關(guān)緩存操作了。

如果通過(guò)配置文件方式定義緩存參數(shù)的話,可以無(wú)需手動(dòng)進(jìn)行緩存初始化操作,可以直接進(jìn)行緩存讀取和設(shè)置等操作。

設(shè)置緩存

設(shè)置緩存(有效期一個(gè)小時(shí))

Cache::set('name',$value,3600);

如果設(shè)置成功返回true,否則返回false。

V5.0.11版本開(kāi)始,緩存有效期支持指定過(guò)期時(shí)間,用法:

Cache::set('name',$value,new DateTime('2017-10-1 12:00'));

表示緩存數(shù)據(jù)到2017年10月1日中午12點(diǎn)過(guò)期。

緩存自增

針對(duì)數(shù)值類(lèi)型的緩存數(shù)據(jù),可以使用自增操作,例如:

// name自增(步進(jìn)值為1)
Cache::inc('name');
// name自增(步進(jìn)值為3)
Cache::inc('name',3);

緩存自減

針對(duì)數(shù)值類(lèi)型的緩存數(shù)據(jù),可以使用自減操作,例如:

// name自減(步進(jìn)值為1)
Cache::dec('name');
// name自減(步進(jìn)值為3)
Cache::dec('name',3);

獲取緩存

獲取緩存數(shù)據(jù)可以使用:

dump(Cache::get('name')); 

如果name值不存在,則默認(rèn)返回 false

支持指定默認(rèn)值,例如:

dump(Cache::get('name','')); 

表示如果name值不存在,則返回空字符串。

刪除緩存

Cache::rm('name'); 

獲取并刪除緩存

Cache::pull('name'); 

如果name值不存在,則返回null。

清空緩存

Cache::clear(); 

不存在則寫(xiě)入緩存數(shù)據(jù)后返回(v5.0.2+

Cache::remember('name',function(){
	return time();
});

獲取緩存對(duì)象

可以獲取緩存對(duì)象,并且調(diào)用驅(qū)動(dòng)類(lèi)的高級(jí)方法,例如:

$cache = Cache::init();
// 獲取緩存對(duì)象句柄
$handler = $cache->handler();

助手函數(shù)

系統(tǒng)對(duì)緩存操作提供了助手函數(shù)cache,用法如下:

$options = [
     // 緩存類(lèi)型為File
    'type'   => 'File', 
     // 緩存有效期為永久有效
    'expire' => 0,
     // 指定緩存目錄
    'path'   => APP_PATH . 'runtime/cache/', 
];

// 緩存初始化
// 不進(jìn)行緩存初始化的話,默認(rèn)使用配置文件中的緩存配置
cache($options);

// 設(shè)置緩存數(shù)據(jù)
cache('name', $value, 3600);
// 獲取緩存數(shù)據(jù)
var_dump(cache('name'));
// 刪除緩存數(shù)據(jù)
cache('name', NULL);

// 設(shè)置緩存的同時(shí)并且進(jìn)行參數(shù)設(shè)置
cache('test', $value, $options); 

緩存標(biāo)簽

支持給緩存數(shù)據(jù)打標(biāo)簽,例如:

Cache::tag('tag')->set('name1','value1');
Cache::tag('tag')->set('name2','value2');
// 或者批量設(shè)置緩存標(biāo)簽
Cache::set('name1','value1');
Cache::set('name2','value2');
Cache::tag('tag',['name1','name2']);
// 清除tag標(biāo)簽的緩存數(shù)據(jù)
Cache::clear('tag');

同時(shí)使用多個(gè)緩存類(lèi)型

如果要同時(shí)使用多個(gè)緩存類(lèi)型進(jìn)行操作的話,可以做如下配置:

'cache' =>  [
    // 使用復(fù)合緩存類(lèi)型
    'type'  =>  'complex',
    // 默認(rèn)使用的緩存
    'default'   =>  [
        // 驅(qū)動(dòng)方式
        'type'   => 'File',
        // 緩存保存目錄
        'path'   => CACHE_PATH,
    ],
    // 文件緩存
    'file'   =>  [
        // 驅(qū)動(dòng)方式
        'type'   => 'file',
        // 設(shè)置不同的緩存保存目錄
        'path'   => RUNTIME_PATH . 'file/',
    ],  
    // redis緩存
    'redis'   =>  [
        // 驅(qū)動(dòng)方式
        'type'   => 'redis',
        // 服務(wù)器地址
        'host'       => '127.0.0.1',
    ],     
],

cache.type配置為complex之后,就可以緩存多個(gè)緩存類(lèi)型和緩存配置,每個(gè)緩存配置的方法和之前一樣,并且你可以給相同類(lèi)型的緩存類(lèi)型(使用不同的緩存標(biāo)識(shí))配置不同的緩存配置參數(shù)。

當(dāng)使用

Cache::set('name', 'value');
Cache::get('name');

的時(shí)候,其實(shí)使用的是default緩存標(biāo)識(shí)的緩存配置,如果需要切換到其它的緩存標(biāo)識(shí)操作,可以使用:

// 切換到file操作
Cache::store('file')->set('name','value');
Cache::get('name');
// 切換到redis操作
Cache::store('redis')->set('name','value');
Cache::get('name');
文檔最后更新時(shí)間:2018-04-26 10:51:41

文檔
目錄

深色
模式

切換
寬度