hareland/multi-cache-remember

此包为Laravel Cache facade提供rememberMany宏,用于高效检索多个缓存键,并支持自定义过期时间和缺失键的回调函数。

1.0.0 2023-07-31 12:38 UTC

This package is auto-updated.

Last update: 2024-09-04 12:47:06 UTC


README

Build Total Downloads

此包解决了什么问题?

此包为Laravel Cache facade提供rememberMany宏,用于高效检索多个缓存键,并支持自定义过期时间和缺失键的回调函数。

Laravel Cache facade的rememberMany宏相对于传统的逐个查找多个缓存键的方法具有多个优势。

为什么?

  1. 减少缓存查找次数:使用传统方法,即使某些键连续被检索,每个缓存键都会单独查找。使用rememberMany宏,所有请求的键都通过一个Cache::many()的调用一次性检索,这可以显著减少缓存查找次数并提高性能。

  2. 可自定义的缓存过期时间:rememberMany宏允许你一次性为所有缓存的值指定过期时间,这可以简化缓存管理过程,并使确保缓存数据最新变得更容易。

  3. 缺失键的回调函数:rememberMany宏允许你为每个缓存键指定一个回调函数,只有在键未在缓存中找到时才会调用。这与Cache::remember()方法类似。

安装

composer require hareland/multi-cache-remember

注册ServiceProvider(如果需要的话)

// in config/app.php
'providers' => [
    \Hareland\MultiCacheRemember\MultiCacheServiceProvider::class,
]

用法

要设置默认的TTL,你可以在config/services.php中设置键multi_remember.default_ttl,并设置为秒。

简单(无自定义TTL)

<?php

use Illuminate\Support\Facades\Cache;

[$user1, $user2, $meta] = Cache::rememberMany([
    'user:1' => fn ()=> \App\Models\User::findOrFail(1),
    'user:2' => fn ()=> \App\Models\User::findOrFail(2),
    'meta:11'=> fn ()=> \App\Models\Meta::findOrFail(11),
], 5);// 5 seconds is now the TTL for all the items.

某些键的自定义TTL

<?php

use Illuminate\Support\Facades\Cache;

[$topStats, $orgSales, $overview] = Cache::rememberMany([
    'dashboard.stats.top:user:1' => [fn() => \App\Models\Stats::findFor(request()->user()), 60 * 15],
    'dashboard.stats.sales:org:3' => [fn() => \App\Models\StatsForOrf::findFor(request()->user()->currentOrg), 60 * 5],
    'dashboard.stats.overview:org:3' => fn() => \App\Models\OverviewStats::findFor(request()->user()->currentOrg),
], 60); // 60 seconds is the default TTL for any keys that does not have a custom one.

"Buy Me A Coffee"