本地apache服务器上奇怪的memcache行为


strange memcache behaviour on local apache server

我目前在本地部署我的web服务api时有麻烦。我使用memcached与PHP Memcache扩展。以下是行为:

我有一个登录功能,首先检查用户信息是否在内存中使用以下代码;

$cache = Memcacher::get_instance()->load( 'user.' . $email);
  • 如果缓存存在,它将返回变量$cachetrue
  • 如果缓存不存在,那么我用下面的代码将它保存到内存中;

    $cache = Memcacher::get_instance()->save( 'user.' . $login['value']['email'], $login);

参数$login是保存用户信息的关联数组。

保存到内存后,我尝试重新登录。然而,它不持有信息之前,我保存到memcached服务器3-4次。

3-4次登录后,从缓存中成功获取登录信息。

谁能给我解释一下那个奇怪的行为?是否有任何memcached配置变量来防止这种情况?

注意:我用sudo service memcached restart重新启动memcached来刷新内存在Ubuntu

注意:Memcache是一个自定义模块,使用PHP Memcache扩展的set()get()函数

注意:这是Memcacher的源代码

您正在连接一个数组和一个字符串。有时,$login可能不是一个数组,因此您将开始接收您所拥有的信息,因为连接将正常工作。但是如果它是一个数组,您将无法在memcache中保存键。你会收到一个通知,我猜你会忽略的。