我正在使用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中适应这种行为?
答案 0 :(得分:9)
您可以使用cache tags。
缓存标记允许您标记缓存中的相关项,然后刷新已分配给定标记的所有缓存值。您可以通过传入有序的标记名称数组来访问标记的缓存。例如,让我们访问标记的缓存并将值放入缓存中:
Cache::tags(['people', 'artists'])->put('John', $john, $minutes);
您可以刷新分配了标签或标签列表的所有项目。例如,此语句将删除标记为人员,作者或两者的所有缓存。因此,Anne和John都将从缓存中删除:
Cache::tags(['people', 'authors'])->flush();