【发布时间】:2015-01-12 13:59:08
【问题描述】:
我想使用 PHP 和 MySQL 组合来实现网页,它有一部分用于自动更新来自 DB 的通知计数,首先我选择设置时间间隔的 ajax 来更新通知计数,但是当我要去性能 一些建议说,当许多用户走上正轨时,ajax 并不理想。所以我指的是 memcache 机制,以我的方式看起来不错,因为它避免了许多请求连续命中 mysql,所以现在的问题是如何保持 memcache 与 mysql 同步,我尝试了 memcache 的简单示例,下面是 mysq php 代码
<?php
$meminstance = new Memcache();
$meminstance->pconnect('localhost', 11211);
mysql_connect("localhost", "appuser", "Appuser") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$query = "select id,client,ip,count,title from mysql_common.alert_count";
$querykey = "KEY" . md5($query);
$result = $meminstance->get($querykey);
if (!$result) {
$query = mysql_query("select id,client,ip,count,title from mysql_common.alert_count");
while($row= mysql_fetch_array($query))
{
$id[]=$row['id'];
$count[]=$row['count'];
$title[]=$row['title'];
$client[]=$row['client'];
$ip[]=$row['ip'];
}
$arr['id']=$id;
$arr['count']=$count;
$arr['title']=$title;
$arr['client']=$client;
$arr['ip']=$ip;
$result= json_encode($arr);
$meminstance->set($querykey, $result, false, 20);
echo $result;
print "got result from mysql\n";
return 0;
}
print_r($meminstance->get($querykey));
print "got result from memcached\n";
return 0;
?>
上述代码的工作流程-首先是具有此查询数据的memcache,然后从memcache获取,否则从mysql获取结果并存储到memcache,但是当我更新mysql表数据并执行相同的代码时,它给出的结果来自memcache 但那不是更新的数据。请指导我使 memcache 与 mysql 保持同步。谢谢
【问题讨论】:
标签: php mysql caching memcached