Memcached的Laravel缓存问题


Laravel Cache issue with Memcached

在Laravel中使用Memcached时,我遇到了一个奇怪的问题。在我的本地环境中,我使用的是Windows,因为没有适用于Windows的Memcached,所以我在本地使用文件缓存驱动程序。对于生产服务器,我们安装了Memcached,我在那里使用不同的配置,并使用Memcached驱动程序。代码是相同的。这是我对Memcached的问题。这里有一个简单的代码:

$cacheKey = "test_key";       
$hasCache =  Cache::has($cacheKey);
$value = "";
if($hasCache)
{
    $value = Cache::get($cacheKey);
}
$isAdded = Cache::add($cacheKey, "test_value", 60);

$isAdded始终为true(只应在第一次为true),因此添加了缓存,但$hasCache始终为false,$value始终为空。这就像值在添加到缓存后立即被删除一样

在本地运行良好,问题仅出现在生产服务器上。没有抛出异常。我试着切换到生产服务器上的文件驱动程序,它正常工作,所以问题出在memcached驱动程序上。

我很难调试它,所以如果有人有类似的问题,我会感谢你的帮助:)

在你的情况下,当然你会一直有$idAdded == true,不管你有$value = ""还是$value = "test_value",你仍然在为键赋值。

我对Memcached和Laravel也有一些问题,尽管我认为更多的是因为我不太了解Memcached。

但是,我建议使用Cache::remember()-函数,而不是通过两个不同的步骤检查和设置缓存。自从我开始使用Memcached以来,它一直对我很好,所以在你的例子中:

$cacheKey = 'test_key';
$value = Cache::remember($cacheKey, 60, function(){
    $value = 'test_value';
    return $value;
});

此外,您是否检查过Memcached是否确实在运行,并且提供了正确的连接?