ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 缓存 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(); ~~~ 刷新缓存**不**遵守缓存前缀,并且将从缓存中删除所有条目。清除由其他应用程序共享的缓存时,请仔细考虑这一点。