当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《按模式/通配符删除缓存键》经验,为你挑选了1个好方法。

我正在使用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中容纳这种行为?



1> Alexey Mezen..:

您可以使用缓存标记.

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

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

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

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


使用'file'或'database'驱动时不支持:(
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有