node.js - 如何使用redis在 Node 中缓存查询数据

标签 node.js postgresql caching express redis

我正在使用 Express、Postgresql 和 Redis 在 Node 中构建 API,并且在涉及 Node 时我是一个完全的初学者。我正在尝试设置 redis 以缓存来自 postgres 的查询响应,但我无法弄清楚如何在不在每个文件中重复实现的情况下做到这一点。

这是我的一些 app.js

// connect to the postgresql database 
var database = require("./config/database")(app);
var pg = require("pg"); 
var conString = app.get('db uri');
var client = new pg.Client(conString); client.connect();

// an example of how my routes look like
app.get('/v1/users/:uid', users.getUser(client));

这是 users.js

exports.getUser = function(client) {
    return function(req, res) {
    var userId = req.params.uid;

    var query = client.query("SELECT * FROM users WHERE users.id = ?",[userId]);

    query.on("row", function (row, result) {
      result.addRow(row);
    });

    query.on("end", function (result) {
      res.json(result.rows);
    });

  };
};

我在整个网络上进行了搜索,包括 stackoverflow,我找到的最接近的解决方案可以在此页面上找到 using redis for cahing in node 他的解决方案如下所示:

var handler = function(response)
{
   response = JSON.stringify(response);
   client.setex('some-key-value', 21600, response);     
   res.end(response);
};

client.get('some-key-value', function (err, result) {
   if (err || !result)
      execute_function(zipcode, handler);
   else
      res.end(result);
});

我通过将所有内容包装在 client.get if/else 语句中来实现它的工作,但它看起来很难看,而且由于我有很多路线,我最终会重复很多代码,如何获得它的任何帮助使用我的代码的解决方案将不胜感激。提前致谢!

最佳答案

Javascript 开发中的一个命令问题是 Spaghetti 回调。

您可以使用 https://github.com/kriskowal/q , promise 避免此类错误并使您能够构建更清晰的代码,或者您可以使用 https://github.com/caolan/async ,这也可以处理您的回调。

从事 Node.js 项目的最大优势之一是其背后的社区。因此,您可以搜索合适的 npm 包来帮助您构建项目。

关于node.js - 如何使用redis在 Node 中缓存查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22632035/

相关文章:

java - 使用 Hadoop 分布式缓存时出现 FileNotFoundException

javascript - 使用移动 safari 浏览器时如何防止从缓存中重新加载网页?

javascript - Node.JS fs.readFileSync() 错误参数

javascript - 我如何强制这个 promise 抛出特定的错误?

ruby-on-rails - 选择时间列和整数列的总和小于 current_time

python - Django JSONField 过滤查询集

javascript - 如何在 x 次迭代后暂停循环 x 秒然后恢复

node.js - Mongoose 与第三级嵌套字段值进行比较

java - 如何合并 SQLite 和 PostgreSQL 中的两个不同表?

php - 如何解决性能问题?