Laravel 5:忘记缓存无效

8

我尝试使用以下方式删除特定的缓存数据:

Cache::forget('key');

也尝试过

Cache::pull('key');

但是缓存仍然存在于数据库中

注意:我正在使用数据库缓存和 Laravel 5.1.7


你确定键在缓存中吗?通过使用 Cache::has('key') 进行检查。 - theGreenCabbage
是的,我确定 => 我从数据库中复制密钥 - mwafi
3个回答

3
我找到了答案,问题出现在我从数据库中复制了带有“前缀”的cache键,而Laravel通常会添加另一个prefix,因此它们永远不会匹配。

2
请问您能否详细说明这个声明? - ExoticSeagull
你是怎么修复这个问题的? - kiradotee

3

记录一下:如果你在使用缓存标签,那么forget方法将不起作用。这是我解决问题的方法:

    $cache_key = "MY_CACHE_KEY";
    $cache_tags = ["MY_CACHE_TAG"]; //SOMETIMES I USE MULTIPLE TAGS
    if (\Cache::tags($cache_tags)->has($cache_key)) {
        \Cache::tags($cache_tags)->forget($cache_key);
        $results = "CACHE item " . $cache_key . " forgotten";
    } else {
        $results = "Key " . $cache_key . " IS NOT CACHED";
    }

1

如果有人需要,我的问题是由于文件权限引起的。因此,您可以尝试在项目根目录中使用以下命令 chmod -R 755 .。但是,我使用了chmod -R 777 .,但这不推荐。


1
谢谢,问题已解决。在 Tinker CLI 中甚至没有显示任何错误。 - Mayank Dudakiya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接