使用Memraached和Laravel时有一个奇怪的问题。在我的本地环境中,我使用的是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驱动程序。
我很难调试这个,所以如果有人有类似的问题,我会很感激帮助:)
答案 0 :(得分:1)
在你的情况下,当然你总是有$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实际上正在运行,并且您提供了正确的连接?