【问题标题】:Memcached does not save generated dataMemcached 不保存生成的数据
【发布时间】:2018-10-30 16:03:15
【问题描述】:

我得到了以下代码,如果调用它应该将查询数据保存到 Memcached 并在那里存储 600 毫秒。但是每次我加载页面时,$response 都是空的,var_dump 会显示 MISS。任何想法我做错了什么?正如ps aux | grep memcached 告诉我的那样,Memcached 服务器位于端口 11211 上。

$memcache = new Memcached();
$memcache->addServer("127.0.0.1", 11211);
$response = $memcache->get("test");
var_dump($response);
if ($response) {
    var_dump('HIT');
    $result = $response;
} else {
   var_dump('MISS');
   $sql = 'SELECT * FROM test WHERE bla BETWEEN "'.esc_sql($start).'" AND "'.esc_sql($end).'" ORDER BY datumbekanntgabe ASC';

   $result = $this->mydb->get_results($sql);
   $memcache->set("test", $result, 0, 600);
}
return $result;

【问题讨论】:

  • 你试过增加 600ms 看看是否有效?
  • 是的,我设置为 5000,同样的问题
  • 你能检查你的$memcache->set参数吗,因为我不确定0是干什么用的?
  • @NigelRen 压缩与否
  • 您可以尝试在您的set() 调用中删除0,因为这似乎是针对memcache 而不是memcached - 或者我快疯了:-/

标签: php mysql memcached


【解决方案1】:

看起来好像是在调用中使用 0 作为超时...

$memcache->set("test", $result, 0, 600);

memcache中,第三个参数 - 0 是用于压缩的flag,而第四个是超时时间,在memcached 中虽然没有这个标志,所以调用应该是

$memcache->set("test", $result, 600);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多