Roc*_*och 2 php mysql memcached
我想知道是否可以在memcache中存储"ressource",我现在正在尝试以下代码,但显然它不正确:
$result = mysql_query($sSQL);
$memcache->set($key, $result, 0, $ttl);
return $result;
Run Code Online (Sandbox Code Playgroud)
我不同意zerkms.仅仅因为MySQL有一个缓存系统(实际上,它有几个),并不意味着优化数据库访问没有任何好处.MySQL的查询缓存很棒,但它仍然有局限性:
即使使用远程服务器,Memcached也比MQC快大约23%.使用APC的对象缓存,与单独使用MQC相比,您可以获得高达990%的改进.
因此,有很多理由将数据库结果集缓存在MySQL的查询缓存之外.毕竟,当您需要在同一个脚本中多次访问结果数据时,可以在PHP变量中本地缓存结果数据.那么,如果结果集没有改变,为什么不在多个请求中扩展它呢?
而且仅仅因为服务器足够快并不意味着你不应该努力编写有效的代码.缓存数据库结果并不需要花费太多精力 - 尤其是当APC和Memcached等加速器专为此目的而设计时.(当互联网上一些最大的网站将Memcached与MySQL结合使用时,我不会将这个问题视为一个"奇怪的想法" .)
也就是说,zerkms是正确的,你必须首先获取结果,然后你可以使用APC或Memcached缓存数据.但是,还有另一种手动缓存查询结果的选项,即使用Mysqlnd查询结果缓存插件.这是MySQL查询结果的客户端缓存.
Mysqlnd查询结果缓存插件允许您使用APC,Memcached,sqlite或用户指定的数据源透明地缓存查询.但是,此插件目前与MQC具有相同的限制,因为无法缓存预准备语句.
| 归档时间: |
|
| 查看次数: |
3547 次 |
| 最近记录: |