首页 > 解决方案 > Memcached 不保存生成的数据

问题描述

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

$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;

标签: phpmysqlmemcached

解决方案


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

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

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

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

推荐阅读