hareland / multi-cache-remember
此包为Laravel Cache facade提供rememberMany宏,用于高效检索多个缓存键,并支持自定义过期时间和缺失键的回调函数。
1.0.0
2023-07-31 12:38 UTC
Requires
- illuminate/support: ^6|^7|^8|^9|^10
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^7.10
- pestphp/pest: ^1.22
- pestphp/pest-plugin-laravel: ^1.3
- phpunit/phpunit: ^9.0
README
此包解决了什么问题?
此包为Laravel Cache facade提供rememberMany宏,用于高效检索多个缓存键,并支持自定义过期时间和缺失键的回调函数。
Laravel Cache facade的rememberMany宏相对于传统的逐个查找多个缓存键的方法具有多个优势。
为什么?
-
减少缓存查找次数:使用传统方法,即使某些键连续被检索,每个缓存键都会单独查找。使用rememberMany宏,所有请求的键都通过一个Cache::many()的调用一次性检索,这可以显著减少缓存查找次数并提高性能。
-
可自定义的缓存过期时间:rememberMany宏允许你一次性为所有缓存的值指定过期时间,这可以简化缓存管理过程,并使确保缓存数据最新变得更容易。
-
缺失键的回调函数: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.