# 缓存
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 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图