Laravel 缓存标签的真实使用示例

Fou*_*SSI 1 laravel laravel-cache

根据 Laravel文档

缓存标签允许您标记缓存中的相关项目,然后刷新已分配给给定标签的所有缓存值。你可以通过传入一个有序的标签名称数组来访问一个标签缓存。例如,让我们访问标记缓存并将值放入缓存中:

Cache::tags(['people', 'artists'])->put('John', $john, $minutes);

Cache::tags(['people', 'authors'])->put('Anne', $anne, $minutes);
Run Code Online (Sandbox Code Playgroud)

它们有什么用?

小智 5

正是文档提到的内容。您可以使用标签对缓存进行分组,以便在需要时可以按组清除它们。这真的取决于您的需求。

例如,如果您正在缓存产品:

Cache::put('product_' . $product->id, $product, $minutes);
Run Code Online (Sandbox Code Playgroud)

假设现在您要从缓存中删除所有产品。您必须使用模式product_{id}一一清除每个缓存键,但是如果您使用公共键标记它们(products例如),您可以一次清除所有产品:

Cache::tags(['products'])->put('product_' . $product->id, $product, $minutes);
Run Code Online (Sandbox Code Playgroud)

您还可以使用 artisan 命令清除特定标签:

php artisan cache:clear --tags=products
Run Code Online (Sandbox Code Playgroud)

或以编程方式

Cache::tags('products')->flush();
Run Code Online (Sandbox Code Playgroud)

  • 不,这不是现实世界的示例,产品示例仅使用一个标签 - 如果使用单独的缓存存储来缓存产品,则结果相同。如何使用多个标签? (2认同)