Laravel Eloquent 查询缓存教程
1. 项目介绍
Laravel Eloquent Query Cache 是一个用于 Laravel 应用程序的开源包,它为 Eloquent ORM 提供了类似于 remember() 功能的查询缓存。这个包旨在简化在数据库查询中集成缓存的过程,以提高性能并减少不必要的数据库操作。
该项目由 Renoki Co 维护,支持 Laravel 7.x 及以上版本,依赖于 Laravel 的 illuminate/database 和 illuminate/support 包。
2. 项目快速启动
安装
首先,通过 Composer 将 laravel-eloquent-query-cache 安装到你的 Laravel 项目中:
composer require renoki-co/laravel-eloquent-query-cache
配置
在 Laravel 的 config/app.php 文件里,添加服务提供者和门面(如果需要):
// 在 providers 数组下添加
RennokKi\QueryCache\QueryCacheServiceProvider::class,
// 在 aliases 数组下添加(可选)
'QueryCache' => RennokKi\QueryCache\Facades\QueryCache::class,
使用
现在你可以开始在 Eloquent 查询中使用缓存功能了:
use App\Models\User;
use RennokKi\QueryCache\Traits\Cachable;
class UserController extends Controller
{
public function index()
{
// 缓存查询结果1小时
$users = User::cacheFor(3600)->get();
// 或者使用 tags 进行分区缓存
$users = User::cacheTags(['users'])->get();
return view('users.index', compact('users'));
}
}
清除缓存
要清除特定缓存或全部缓存,可以使用门面方法:
// 清除所有缓存
QueryCache::flush();
// 清除指定标签关联的所有缓存
QueryCache::flushTags(['users']);
3. 应用案例和最佳实践
-
数据更新时自动清理缓存:你可能想在模型保存或删除时自动清除相关缓存。可以通过监听
saved和deleted事件来实现。 -
自定义缓存键:如果你需要更复杂的缓存键生成逻辑,可以实现
QueryCacheModuleInterface并在查询构建器上注册自定义的generateCacheKey方法。 -
避免重复缓存:使用
shouldAvoidCache方法可以在某些情况下禁用缓存,例如当请求包含特定参数时。
4. 典型生态项目
-
Redis: 这个包默认使用 Redis 作为缓存驱动,但你可以配置使用 Laravel 支持的其他缓存驱动。
-
Laravel Legacy-Factories: 若你在测试环境中使用旧版工厂,可以安装
laravel/legacy-factories来保持兼容性。 -
Mockery:进行单元测试时,你可能需要 Mockery 来模拟数据库交互。
-
Orchestra Testbench: 当你需要在 Laravel 测试套件中测试包时,这将派上用场。
希望本教程对你理解和使用 Laravel Eloquent Query Cache 包有所帮助。如需更多详细信息,请查阅项目官方文档:Gitbook。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



