krisanalfa / bono-cache
Bono PHP 框架的 Laravel 缓存管理器
Requires
- illuminate/cache: ~4.1.23
- illuminate/filesystem: 4.1.*@dev
- xinix-technology/bono: ~0.1.10
README
#BonoCache Bono PHP 框架的 Laravel 缓存
##配置 将以下行添加到您的配置文件中。
'bono.providers' => array( '\\KrisanAlfa\\Cache\\Provider\\CacheProvider' ), 'cache' => array( 'driver' => 'file', 'path' => __DIR__ . '/../../cache', 'prefix' => 'bono', )
配置包含三个设置,分别是 driver
、path
和 prefix
。
####驱动器 此选项控制在使用缓存库时默认的缓存 "驱动器"。当然,您可以在任何时候使用其他驱动器。
支持的驱动器
- 现在:
file
、array
、apc
- 以后:
norm
、redis
、memcached
####路径 当使用 file
缓存驱动器时,我们需要一个绝对位置来存储缓存文件。
##缓存使用
存储缓存项
$app->cache->put('key', 'value', $minutes);
使用 Carbon 对象设置过期时间
$expiresAt = Carbon::now()->addMinutes(10); $app->cache->put('key', 'value', $expiresAt); // cache will be expired at 10 minutes later
如果缓存项不存在则存储缓存项
$app->cache->add('key', 'value', $minutes);
add
方法将在实际 添加 缓存项时返回 true
。否则,该方法将返回 false
。
检查缓存中是否存在
if ($app->cache->has('key')) { // }
从缓存中检索项
$value = $app->cache->get('key');
检索项或返回默认值
$value = $app->cache->get('key', 'default'); $value = $app->cache->get('key', function() { return 'default'; });
永久存储缓存项
$app->cache->forever('key', 'value');
有时您可能希望从缓存中检索项,但如果请求的项不存在,则存储默认值。您可以使用 $app->cache->remember
方法来完成此操作
$value = $app->cache->remember('users', $minutes, function() { return Norm::factory('User')->find(); });
您还可以将 remember
和 forever
方法结合起来使用
$value = $app->cache->rememberForever('users', function() { return Norm::factory('User')->find(); });
请注意,所有存储在缓存中的项都是序列化的,因此您可以自由地存储任何类型的数据。
从缓存中删除项
$app->cache->forget('key');
缓存标签
注意:当使用
file
缓存驱动器时,不支持缓存标签。此外,当使用存储 "永久" 的缓存且具有多个标签时,性能最佳的是类似memcached
这样的驱动器,它将自动清除陈旧记录。
缓存标签允许您对缓存中相关项进行标记,然后清除所有带有给定名称的缓存标签。要访问带有标签的缓存,请使用 tags
方法
访问带有标签的缓存
您可以通过传递一个有序的标签名称列表作为参数,或作为有序的标签名称数组来存储带有标签的缓存。
$app->cache->tags('people', 'authors')->put('Alfa', $alfa, $minutes); $app->cache->tags(array('people', 'artists'))->put('Ganesha', $ganesha, $minutes);
您可以将任何缓存存储方法与标签结合使用,包括 remember
、forever
和 rememberForever
。您还可以从带有标签的缓存中访问缓存项,以及使用其他缓存方法,如 increment
和 decrement
访问带有标签的缓存中的项
要访问带有标签的缓存,请传递用于保存它的相同有序标签列表。
$ganesha = $app->cache->tags('people', 'artists')->get('Ganesha'); $alfa = $app->cache->tags(array('people', 'authors'))->get('Alfa');
您可以通过名称或名称列表删除所有带有标签的项。例如,此语句将删除所有带有 people
、authors
或两者的缓存标签。因此,"Ganesha" 和 "Alfa" 都将从缓存中删除。
$app->cache->tags('people', 'authors')->flush();
相比之下,此语句将仅删除带有 authors
标签的缓存,因此 "Alfa" 将被删除,但 "Ganesha" 不会。
$app->cache->tags('authors')->flush();
##更多信息 有关 Laravel 缓存的更多信息,请参阅 此文档。