amelia / rememberable
Laravel 5 的查询缓存
Requires
- php: >=5.6
- laravel/framework: ~5.2|~5.3
Requires (Dev)
- mockery/mockery: 1.0.x-dev
- phpunit/phpunit: ~5.5
- predis/predis: ^1.1
This package is auto-updated.
Last update: 2024-09-08 14:00:50 UTC
README
Rememberable 是 Laravel 5.2+ 的一个 Eloquent 特性,它为您的模型添加了透明的查询缓存。
它通过简单地记住使用的 SQL 查询并存储结果来实现。如果在缓存持续存在的情况下尝试相同的查询,它将从存储中检索,而不是再次击中您的数据库。
要求
目前,您必须使用 Redis 作为您的缓存实现。
计划在未来更改此设置,欢迎提出 pull request。
支持 PHP 5.6+。
注意:此包将导致您在模型上执行增量/减量操作后触发 saved
事件。对于大多数人来说,这应该不会引起任何关注,但要禁用它,请设置 protected static $interceptable = false
。
安装
使用 Composer 安装,就像安装其他任何东西一样。
composer require amelia/rememberable
要开始使用 Eloquent,最简单的方法是创建一个抽象的 App\Model
,您可以从该模型扩展应用程序模型。在这个基础模型中,您可以导入 rememberable 特性,这将扩展相同的缓存功能到您从模型构建的任何查询。
<?php
namespace App;
use Amelia\Rememberable\Rememberable;
use Illuminate\Database\Eloquent\Model as Eloquent;
abstract class Model extends Eloquent
{
use Rememberable;
/**
* Remember _all_ queries on this model
*
* @var bool
*/
protected static $rememberable = true;
}
现在,只需确保使用新的 App\Model
而不是 Eloquent 来创建应用程序模型。
或者,您可以直接将特性应用于每个希望使用 remember()
的模型。
使用方法
所有查询都会自动记住。
在更新或删除时,任何包含更改模型的查询都会从缓存中删除。
这意味着在几乎所有情况下,您只需将基本模型设置为记住查询,就可以忽略它。
刷新
如果您希望手动刷新查询缓存,可以发出一个 Model::flush()
命令。
flush()
接受缓存标签参数;应用于每个查询的标签是模型的类名、模型的表名和 'rememberable'
。
因此,要刷新所有查询(例如,在部署期间,如果您不刷新整个缓存),在任何使用 rememberable 的模型上发出 ::flush('rememberable')
。
手动使用
就像在 watson/rememberable
中一样,如果您没有在使用的模型上将 $rememberable
设置为 true
,您可以在特定的查询上使用 remember(int $minutes)
。
// Remember the number of users for an hour.
// remembers "select count(*) from users"
$users = User::remember(60)->count();
致谢
此包遵循 MIT 许可证。
它是 watson/rememberable
的直接分支,添加了许多新特性。