# 緩存
October提供了用于各種緩存系統的統一API,并且緩存配置位于`config/cache.php`。在此文件中,您可以指定您希望在整個應用程序中默認使用哪個緩存驅動程序。開箱即[用地](http://redis.io/)支持流行的緩存系統,例如[Memcached](http://memcached.org/)和[Redis](http://redis.io/)。
高速緩存配置文件還包含其他各種選項,這些選項記錄在文件中,因此請務必仔細閱讀這些選項。默認情況下,OctchCMS配置為使用`file`緩存驅動程序,該驅動程序將序列化的緩存對象存儲在文件系統中。對于較大的應用程序,建議您使用內存緩存,例如Memcached或APC。您甚至可以為同一驅動程序配置多個緩存配置。
### 緩存先決條件
#### 數據庫
該`database`高速緩存驅動器使用數據庫代替文件系統。由于數據庫結構已經可用,因此不需要其他配置即可使用此類型。
#### 記憶快取
要使用Memcached緩存,需要安裝[Memcached PECL軟件包](http://pecl.php.net/package/memcached)。
默認配置使用基于[Memcached :: addServer的](http://php.net/manual/en/memcached.addserver.php)TCP / IP:
~~~
'memcached' => [
[
'host' => '127.0.0.1',
'port' => 11211,
'weight' => 100
],
],
~~~
您也可以將`host`選項設置為UNIX套接字路徑。如果這樣做,`port`則應將選項設置為`0`:
~~~
'memcached' => [
[
'host' => '/var/run/memcached/memcached.sock',
'port' => 0,
'weight' => 100
],
],
~~~
#### 雷迪斯
> 您需要先安裝[驅動程序插件,](http://octobercms.com/plugin/october-drivers)然后才能使用Redis緩存驅動程序。
您的應用程序的Redis配置位于`config/database.php`配置文件中。在此文件中,您將看到一個`redis`包含應用程序使用的Redis服務器的數組:
~~~
'redis' => [
'cluster' => false,
'default' => [
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
],
~~~
您可以`options`在Redis連接定義中定義一個數組值,從而允許您指定一組Predis[客戶端選項](https://github.com/nrk/predis/wiki/Client-Options)。
如果您的Redis服務器需要身份驗證,則可以通過將`password`配置項添加到Redis服務器配置陣列中來提供密碼。
### [](https://octobercms.com/docs/services/cache#cache-usage)緩存使用
盡管大多數緩存是在10月內部處理的,但是`Cache`Facade提供了一些簡單的方法來緩存自己的數據。
### [](https://octobercms.com/docs/services/cache#retrieving-items-from-the-cache)從緩存中檢索項目
在`get`對方法`Cache`門面用于從緩存中檢索項目。如果該項目在緩存中不存在,`null`將被返回。如果您愿意,可以將第二個參數傳遞給該`get`方法,以指定您希望在項目不存在時返回的自定義默認值:
~~~
$value = Cache::get('key');
$value = Cache::get('key', 'default');
~~~
您甚至可以傳遞a`Closure`作為默認值。`Closure`如果指定的項目在緩存中不存在,則將返回的結果。傳遞閉包可讓您推遲從數據庫或其他外部服務中檢索默認值:
~~~
$value = Cache::get('key', function() {
return Db::table(...)->get();
});
~~~
#### 檢查項目是否存在
該`has`方法可用于確定緩存中是否存在某個項目:
~~~
if (Cache::has('key')) {
//
}
~~~
#### 遞增/遞減值
所述`increment`和`decrement`方法可被用于調整在所述高速緩存條目的整數的值。這兩種方法都可以選擇接受第二個參數,該參數指示增加或減少項目值的數量:
~~~
Cache::increment('key');
Cache::increment('key', $amount);
Cache::decrement('key');
Cache::decrement('key', $amount);
~~~
#### 檢索或更新
有時,您可能希望從緩存中檢索一個項目,但是如果所請求的項目不存在,也可能會存儲默認值。例如,您可能希望從緩存中檢索所有用戶,或者如果不存在,則從數據庫中檢索它們并將它們添加到緩存中。您可以使用以下`Cache::remember`方法執行此操作:
~~~
$value = Cache::remember('users', $seconds, function() {
return Db::table('users')->get();
});
~~~
如果該項目在緩存中不存在,則將執行`Closure`傳遞給該`remember`方法的項目,并將其結果放入緩存中。
您還可以結合使用`remember`和`forever`方法:
~~~
$value = Cache::rememberForever('users', function() {
return Db::table('users')->get();
});
~~~
#### 檢索并刪除
如果需要從緩存中檢索項目然后將其刪除,則可以使用該`pull`方法。與`get`方法類似,`null`如果該項在緩存中不存在,則將返回:
~~~
$value = Cache::pull('key');
~~~
### [](https://octobercms.com/docs/services/cache#storing-items-in-the-cache)將項目存儲在緩存中
您可以使用外觀`put`上的方法`Cache`將項目存儲在緩存中。將項目放置在緩存中時,需要指定要緩存值的秒數:
~~~
Cache::put('key', 'value', $seconds);
~~~
除了傳遞表示項目過期的秒數之外,您還可以傳遞`DateTime`表示緩存項目過期時間的PHP實例:
~~~
$expiresAt = Carbon::now()->addMinutes(10);
Cache::put('key', 'value', $expiresAt);
~~~
> **注意:**我們建議使用`DateTime`實例來定義所有有效期限,以確保與將來版本的October CMS兼容。
`add`如果緩存存儲中尚不存在該方法,則該方法只會將其添加到緩存中。`true`如果該項目實際上已添加到緩存,則該方法將返回。否則,該方法將返回`false`:
~~~
Cache::add('key', 'value', $seconds);
~~~
該`forever`方法可以用于將項目永久存儲在高速緩存中。必須使用以下`forget`方法從緩存中手動刪除這些值:
~~~
Cache::forever('key', 'value');
~~~
### [](https://octobercms.com/docs/services/cache#removing-items-from-the-cache)從緩存中刪除項目
您可以使用外觀`forget`上的方法從緩存中刪除項目`Cache`:
~~~
Cache::forget('key');
~~~
您可以使用以下`flush`方法清除整個緩存:
~~~
Cache::flush();
~~~
刷新緩存**不**遵守緩存前綴,并且將從緩存中刪除所有條目。清除由其他應用程序共享的緩存時,請仔細考慮這一點。
- 基本說明
- 基本操作
- October cms 安裝
- 后臺控制器路徑
- 圖標
- 獲取安裝網上的插件/主題
- 插件構造器使用
- 定時任務
- October后臺控制器
- vscode編輯器
- ajax操作
- 使用
- ajax更新組件
- ajax屬性API
- JavaScript API
- ajax綜合使用
- 主題
- 多語言主題
- 安裝市場主題
- 主題程序處理
- 主題
- 頁面
- 部件
- 布局
- 內容
- 組件
- 媒體
- 主題表單操作
- 表單使用
- 表單后端程序處理
- 插件
- 自定義插件
- 插件說明
- 插件導航條
- 插件數據庫設置
- 插件的設置管理
- 插件的配置文件config
- 組件
- app服務
- app容器
- 擴展行為
- 緩存
- Collection類
- Lazy Collections
- Collection方法
- 助手函數
- 數組助手函數
- 路徑助手函數
- 玄樂助手函數
- 其他助手函數
- 錯誤與記錄
- 事件處理
- HTML頁面
- 文件與目錄操作
- 散列和加密
- 郵件
- 郵件內容
- 郵件發送
- 分頁
- 模板解析器
- 動態解析器語法
- 隊列消息
- 請求與輸入
- 響應
- 視圖
- 路由器
- 配置
- 驗證操作
- 處理錯誤消息
- 錯誤消息與視圖
- 可用的驗證規則
- 有條件的驗證規則
- 驗證數組
- 錯誤消息
- 自定義驗證規則
- 模型操作
- 定義模型與其屬性
- 檢索模型
- 插入與更新
- 刪除模型
- 查詢范圍
- 事件操作
- 關聯操作
- 定義關系
- 關系類型
- 多肽關系
- 關系查詢
- 渴望加載
- 插入模型
- 數據庫操作
- 基本用法
- 數據表結構
- 查詢連貫操作
- 結果檢索
- select子句
- 插入更新
- where子句
- 排序,分組,限制和偏移
- 文件附件
- Collection操作
- 屬性操作
- 系列化json
- 數據庫屬性
- 數據庫行為
- 控制器
- 后臺控制器定義
- 后臺頁面
- 后臺組件
- 后臺表單
- 表單組件
- 表單視圖
- 表單行為
- 后臺列表
- 列表行為
- 列表過濾器
- 可用列類型
- 關系行為
- 關系行為類型
- 擴展關系行為
- 列表排序操作
- 導入導出操作
- 用于與權限
- corlate模板修改
- 修改頂部導航
- laravel問題
- 控制器不存在
- 控制器
- 路由組
- laravel筆記
- laravel 安裝
- 偽靜態配置
- 依賴注入 & 控制器
- 中間件
- 路由文件
- 視圖