这是我用memcache"存储"mysql查询的代码
$mem = new Memcache; $mem->connect('127.0.0.1', 11211); $query = "SELECT * FROM tbl limit 0,20 "; $key = md5($query); $get_data = $memcache->get($key); if($get_data) { echo 'Data Pulled From Cache'; } else { $res = mysql_fetch_array(mysql_query($query)); $memcache->set($key, $res, TRUE, 3600); }
问题是memcache只存储查询返回的第一行.如何在memcache中的一个键中保存所有20行?
该声明
$ res = mysql_fetch_array(mysql_query($ query);
仅从查询结果中提取一行.
尝试这样的方法来获取整个结果,然后将其存储在缓存中:
$res = array(); $qres = mysql_query($query); while($a = mysql_fetch_array($qres, MYSQL_ASSOC)) $res[] = $a; mysql_free_result($res); $memcache->set($key, $res, TRUE, 3600);