学习Laravel的ORM缓存包

129 阅读1分钟

[LaraCache]是一个基于ORM的Laravel包,用于创建,更新和管理基于模型查询的缓存项目。使用这个包,你可以缓存你在整个应用程序中大量使用的查询。

use Mostafaznv\LaraCache\Traits\LaraCache;
 
class Article extends Model
{
    use LaraCache;
 
    public static function cacheEntities(): array
    {
        return [
            CacheEntity::make('list.forever')
                ->cache(function() {
                    return Article::query()->latest()->get();
                }),
 
            CacheEntity::make('latest')
                ->validForRestOfDay()
                ->cache(function() {
                    return Article::query()->latest()->first();
                })
        ];
    }
}

使用cacheEntities 方法来定义缓存的查询,Laracache会处理剩下的事情。为了使用缓存的查询,你会像下面的例子一样调用模型。

use Mostafaznv\LaraCache\Facades\LaraCache;
 
 
$cache = Article::cache()->get('latest');
// or
$cache = LaraCache::retrieve(Article::class, 'latest');

通过这个包,你可以用以下功能控制缓存。

  • 启用/停用缓存
  • 手动更新缓存
  • 手动更新所有缓存实体
  • 删除缓存
  • 使用流畅的方法或ttl() 方法控制CacheEntity 持续时间

我觉得下面这个手动更新缓存的方法很整洁,可以即时刷新你的缓存。

Article::cache()->update('latest');
// or
LaraCache::update(Article::class, 'latest');