在服务器端缓存 select 查询数据

Caching select query data on server side

我正在编写一个快速应用程序,我将数据从我的视图推送到数据库。但是大部分数据映射到数据库表中的一些其他数据。

例如,是一个选择学生姓名的下拉菜单 - 一旦您按姓名选择学生,下面的下拉菜单 - 将显示允许他担任的所有角色。

所以我遵循这种模式

app.post('\action1', function(req,res){
  function querySomething(){
    var defered = Q.defer();
      connection.query(some_select_query,defered.makeNodeResolver());
      return defered.promise;
    }

  function querySomethingElse(){
    var defered = Q.defer();
      connection.query(some_other_select_query,defered.makeNodeResolver());
      return defered.promise;
    }

   Q.all([querySomething(), querySomethingElse()]).then((results,err) => {
       connection.release()
       if(results){
          res.render('some_view.ejs', {
             result1:results[0][0],
             result2:results[1][0]
          });
       }
       else{
         res.render('error.ejs',{});
       }
   })
})

现在的问题是我必须遵循这种模式 select 从多个表中获取一些东西,将所有这些函数传递给一个 promise - 当结果传回时,转到我的视图结果 objects - 这样我就可以在我的视图中使用它们 - 作为一种相互依赖的下拉方式。

有时我不得不 re-write 多次。

像这样执行 select 查询将是性能密集型的,尤其是当所有视图都使用同一查询的结果时。

有什么方法可以在我的快速服务器端代码上构建缓存数据存储并查询它而不是实际的数据库?

如果有插入或更新 - 我将刷新此商店并只做一次新的 select * 那一次。

express 之上有哪些库可以帮助我做到这一点?

mysql-cache做同样的事情吗??我也在使用 createPool 的连接池。

我如何实现这一点 - 或者我只是恢复使用大型 mvc 之类的风帆来重写我的应用程序?

你可以尝试 apiCache npm 模块。

"有时我不得不多次重写。"

根据业务需要,您可能希望单独处理每个用例,并且此方案不处理缓存。

像这样执行 select 查询将是性能密集型的,尤其是当所有视图都使用同一查询的结果时。

这是一个需要server-side缓存的经典例子。