douzheng5717 2014-11-04 21:51
浏览 58
已采纳

使用memcached缓存多个查询

What is the way to cache multiple queries with memcached in PHP? Suppose a page takes two queries to render, do I need to use two separate keys and access $memcache twice?

Here's an example:

   $id = $_POST["id"];
   $memcache = new Memcache;
   $memcache->connect('localhost', 11211) or die ("Could not connect");

   $dbh = new PDO("mysql:host=$hostname;dbname=$databasename", $username, $password);
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

   $key1 = "{$id}1"; 
   $key2 = "{$id}2"; 

   $cache_result = array();
   $cache_result = $memcache->get($key);
   $cache_result2 = array();
   $cache_result2 = $memcache->get($key2);

   if($cache_result || $cache_result2)
   {
     $rows =$cache_result;
     $rows2 = $cache_result2;
   }
   else
   {
    $sql = "call load_this(?);";
    $users = $dbh->prepare($sql);
    $users->bindValue(1, 1, PDO::PARAM_INT);
    $users->execute();
    $rows = $users->fetchAll(PDO::FETCH_ASSOC);
    $memcache->set($key, $rows, MEMCACHE_COMPRESSED, 1200); 

    $sql = "Call load_that(?)";
    $users = $dbh->prepare($sql);
    $users->bindValue(1, 2, PDO::PARAM_INT);
    $users->execute();
    $rows2 = $users->fetchAll(PDO::FETCH_ASSOC);
    $memcache->set($key2, $rows2, MEMCACHE_COMPRESSED, 1200); 

    print "NOT_CACHED";  
   }
  • 写回答

1条回答 默认 最新

  • douliexing2195 2014-11-04 22:00
    关注

    You can do it however you want...

    If they are going to be cached at the same time, you can also simply do this:

    $memcache->set('key', array('result1' => $rows, 'result2' => $rows2), MEMCACHE_COMPRESSED, 1200); 
    

    This would cache both results in the same object and would require less calls to memcached, but the different in performance wouldn't be meaningful.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算