#### 概述
ThinkPHP采用think\Cache類提供緩存功能支持。
|版本| 新增功能|
|--|--|
|5.0.11 |緩存設置方法有效期支持指定過期時間(DateTime)|
|5.0.2 |增加remember方法|
#### 設置
緩存支持采用驅動方式,所以緩存在使用之前,需要進行連接操作,也就是緩存初始化操作。
~~~
$options = [
// 緩存類型為File
'type' => 'File',
// 緩存有效期為永久有效
'expire'=> 0,
//緩存前綴
'prefix'=> 'think',
// 指定緩存目錄
'path' => APP_PATH.'runtime/cache/',
];
Cache::connect($options);
~~~
或者通過定義配置參數的方式,在應用配置文件中添加:
~~~
'cache' => [
'type' => 'File',
'path' => CACHE_PATH,
'prefix' => '',
'expire' => 0,
],
~~~
支持的緩存類型包括file、memcache、wincache、sqlite、redis和xcache。
緩存參數根據不同的緩存方式會有所區別,通用的緩存參數如下:
|參數 |描述|
|--|--|
|type |緩存類型|
|expire |緩存有效期 (默認為0 表示永久緩存)|
|prefix |緩存前綴(默認為空)|
#### 使用
緩存初始化之后,就可以進行相關緩存操作了。
如果通過配置文件方式定義緩存參數的話,可以無需手動進行緩存初始化操作,可以直接進行緩存讀取和設置等操作。
##### 設置緩存
設置緩存(有效期一個小時)
~~~
Cache::set('name',$value,3600);
~~~
如果設置成功返回true,否則返回false。
V5.0.11版本開始,緩存有效期支持指定過期時間,用法:
~~~
Cache::set('name',$value,new DateTime('2017-10-1 12:00'));
~~~
表示緩存數據到2017年10月1日中午12點過期。
##### 緩存自增
針對數值類型的緩存數據,可以使用自增操作,例如:
~~~
// name自增(步進值為1)
Cache::inc('name');
// name自增(步進值為3)
Cache::inc('name',3);
~~~
##### 緩存自減
針對數值類型的緩存數據,可以使用自減操作,例如:
~~~
// name自減(步進值為1)
Cache::dec('name');
// name自減(步進值為3)
Cache::dec('name',3);
~~~
##### 獲取緩存
獲取緩存數據可以使用:
~~~
dump(Cache::get('name'));
~~~
如果name值不存在,則默認返回 false。
支持指定默認值,例如:
~~~
dump(Cache::get('name',''));
~~~
表示如果name值不存在,則返回空字符串。
##### 刪除緩存
~~~
Cache::rm('name');
~~~
##### 獲取并刪除緩存
~~~
Cache::pull('name');
~~~
如果name值不存在,則返回null。
##### 清空緩存
~~~
Cache::clear();
~~~
不存在則寫入緩存數據后返回(v5.0.2+)
~~~
Cache::remember('name',function(){
return time();
});
~~~
##### 獲取緩存對象
可以獲取緩存對象,并且調用驅動類的高級方法,例如:
~~~
$cache = Cache::init();
// 獲取緩存對象句柄
$handler = $cache->handler();
~~~
#### 助手函數
系統對緩存操作提供了助手函數cache,用法如下:
~~~
$options = [
// 緩存類型為File
'type' => 'File',
// 緩存有效期為永久有效
'expire' => 0,
// 指定緩存目錄
'path' => APP_PATH . 'runtime/cache/',
];
// 緩存初始化
// 不進行緩存初始化的話,默認使用配置文件中的緩存配置
cache($options);
// 設置緩存數據
cache('name', $value, 3600);
// 獲取緩存數據
var_dump(cache('name'));
// 刪除緩存數據
cache('name', NULL);
// 設置緩存的同時并且進行參數設置
cache('test', $value, $options);
~~~
#### 緩存標簽
支持給緩存數據打標簽,例如:
~~~
Cache::tag('tag')->set('name1','value1');
Cache::tag('tag')->set('name2','value2');
// 或者批量設置緩存標簽
Cache::set('name1','value1');
Cache::set('name2','value2');
Cache::tag('tag',['name1','name2']);
// 清除tag標簽的緩存數據
Cache::clear('tag');
~~~
#### 同時使用多個緩存類型
如果要同時使用多個緩存類型進行操作的話,可以做如下配置:
~~~
'cache' => [
// 使用復合緩存類型
'type' => 'complex',
// 默認使用的緩存
'default' => [
// 驅動方式
'type' => 'File',
// 緩存保存目錄
'path' => CACHE_PATH,
],
// 文件緩存
'file' => [
// 驅動方式
'type' => 'file',
// 設置不同的緩存保存目錄
'path' => RUNTIME_PATH . 'file/',
],
// redis緩存
'redis' => [
// 驅動方式
'type' => 'redis',
// 服務器地址
'host' => '127.0.0.1',
],
],
~~~
cache.type配置為complex之后,就可以緩存多個緩存類型和緩存配置,每個緩存配置的方法和之前一樣,并且你可以給相同類型的緩存類型(使用不同的緩存標識)配置不同的緩存配置參數。
當使用
~~~
Cache::set('name', 'value');
Cache::get('name');
~~~
的時候,其實使用的是default緩存標識的緩存配置,如果需要切換到其它的緩存標識操作,可以使用:
~~~
// 切換到file操作
Cache::store('file')->set('name','value');
Cache::get('name');
// 切換到redis操作
Cache::store('redis')->set('name','value');
Cache::get('name');
~~~
- 目錄
- 5.0.10環境配置
- 5.0.10控制器模型對象
- 5.0.10模型初始化
- 5.0.10定義數據對象
- 5.0.10創建數據對象data()方法
- 5.0.10創建數據對象-setAttr方法
- 5.0.10創建數據對象__set()方法
- 5.0.10查詢數據對象getData()
- 實例
- 5.0.10保存數據save()方法
- 5.0.10保存數據saveAll()
- 5.0.10更新數據save()
- 5.0.10批量更新數據saveAll()
- 5.0.10刪除數據delete()
- 5.0.10刪除數據destroy()
- 5.0.10traits詳解
- ThinkPHP 5.0 速查表
- 注釋
- 環境變量配置
- Model分層
- MVC 邏輯服務數據
- Model分層及多對多關聯的建立
- 控制器調用邏輯層
- Session
- 子域名session共享
- 系統錯誤
- 版本錯誤
- 返回錯誤
- Token令牌及身份識別
- 關聯查詢
- 安裝
- Git安裝
- Composer
- 擴展
- Composer類
- 非Composer類
- 引用第三方庫
- 自定義命令行
- 計劃任務
- 調試
- 調試模式
- 監聽SQL
- 數據庫調試
- 單元測試
- 初始化
- 控制器初始化
- 模型初始化
- 數據緩存
- 實戰
- 版本升級
- 從V5.0.17升級到V5.0.18