Laravel Eloquent 查询缓存教程

Laravel Eloquent 查询缓存教程

laravel-eloquent-query-cache项目地址:https://gitcode.com/gh_mirrors/lar/laravel-eloquent-query-cache

1. 项目介绍

Laravel Eloquent Query Cache 是一个用于 Laravel 应用程序的开源包,它为 Eloquent ORM 提供了类似于 remember() 功能的查询缓存。这个包旨在简化在数据库查询中集成缓存的过程,以提高性能并减少不必要的数据库操作。

该项目由 Renoki Co 维护,支持 Laravel 7.x 及以上版本,依赖于 Laravel 的 illuminate/databaseilluminate/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. 应用案例和最佳实践

  • 数据更新时自动清理缓存:你可能想在模型保存或删除时自动清除相关缓存。可以通过监听 saveddeleted 事件来实现。

  • 自定义缓存键:如果你需要更复杂的缓存键生成逻辑,可以实现 QueryCacheModuleInterface 并在查询构建器上注册自定义的 generateCacheKey 方法。

  • 避免重复缓存:使用 shouldAvoidCache 方法可以在某些情况下禁用缓存,例如当请求包含特定参数时。

4. 典型生态项目

  • Redis: 这个包默认使用 Redis 作为缓存驱动,但你可以配置使用 Laravel 支持的其他缓存驱动。

  • Laravel Legacy-Factories: 若你在测试环境中使用旧版工厂,可以安装 laravel/legacy-factories 来保持兼容性。

  • Mockery:进行单元测试时,你可能需要 Mockery 来模拟数据库交互。

  • Orchestra Testbench: 当你需要在 Laravel 测试套件中测试包时,这将派上用场。

希望本教程对你理解和使用 Laravel Eloquent Query Cache 包有所帮助。如需更多详细信息,请查阅项目官方文档:Gitbook

laravel-eloquent-query-cache项目地址:https://gitcode.com/gh_mirrors/lar/laravel-eloquent-query-cache

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦蓉瑛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值