按模式/通配符删除缓存键

时间:2017-03-27 13:49:02

标签: laravel lumen

我正在使用Lumen构建REST API,并希望使用Redis缓存一些路由。例如。对于我使用的路线/用户/ 123 /物品:

$items = Cache::remember('users:123:items', 60, function () {
  // Get data from database and return
});

当对用户的项目进行更改时,我使用以下命令清除缓存:

Cache::forget('users:123:items');

到目前为止一切顺利。但是,我还需要清除我为routes / users / 123和/ users / 123 / categories实现的缓存,因为那些包括项目列表。这意味着我还必须运行:

Cache::forget('users:123');
Cache::forget('users:123:categories');

将来可能会有更多的缓存需要清除,这就是我正在寻找模式/通配符的原因,例如:

Cache::forget('users:123*');

有没有办法在Lumen / Laravel中适应这种行为?

1 个答案:

答案 0 :(得分:9)

您可以使用cache tags

  

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

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

您可以刷新分配了标签或标签列表的所有项目。例如,此语句将删除标记为人员,作者或两者的所有缓存。因此,Anne和John都将从缓存中删除:

Cache::tags(['people', 'authors'])->flush();