我正在使用Lumen构建REST API,并希望使用Redis缓存一些路由.例如我使用的route/users/123/items:
$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中容纳这种行为?
您可以使用缓存标记.
缓存标记允许您标记缓存中的相关项,然后刷新已分配给定标记的所有缓存值.您可以通过传入有序的标记名称数组来访问标记的缓存.例如,让我们访问标记的缓存并将值放入缓存中:
Cache::tags(['people', 'artists'])->put('John', $john, $minutes);
您可以刷新分配了标签或标签列表的所有项目.例如,此语句将删除标记为人员,作者或两者的所有缓存.所以,Anne和John都将从缓存中删除:
Cache::tags(['people', 'authors'])->flush();