node.js - Nodejs为Redis请求设置超时

标签 node.js redis

我已经使用redis 编写了一个简单的服务,用于将数据存储在内存中或从磁盘中获取数据然后存储在内存中,并希望为慢速请求设置超时。我希望找到一种方法来发出超时的获取请求,以防止此请求挂起。感谢您的帮助。

最佳答案

因此,您可以在此处执行一些操作。但是,首先我想知道您是否正在尝试过早优化。在大多数正常情况下,Redis 的速度非常快,如果您在客户端发现性能问题,则表明您的数据或您在 Redis 中处理数据的方式存在问题。这应该在 redis 中修复,您不应该在客户端中执行任何操作来处理缓慢的请求。

那么,如果您偶尔看到速度变慢,那是什么原因造成的?这不是正常的 Redis 问题,应该解决而不是寻找 JavaScript 修复。

如果您仍在寻找 javascript 修复程序,您可以这样做:

const client = require('redis').createClient(...);

export async function asyncSetEx(key) {
  return new Promise((resolve, reject) => {
    const timer = setTimeout(() => {
      reject(new Error('Timed out'));
    });
    client.setEx(key, (res, err) => {
      if (err) {
        reject(err);
      } else {
        resolve(res);
      }
      clearTimeout(timer);
    });
  });
}

不过,我建议对此进行概括,以便它适用于具有任意数量参数的任何 redis 函数。

关于node.js - Nodejs为Redis请求设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975234/

相关文章:

javascript - 如何创建视频文件的 blob

javascript - 根据属性将数组转换为映射的快捷方式

Redis - 手动将所有主人变成主人和奴隶

redis - 在两个日期之间使用分页按日期检索 ID 的顺序

azure - 我的外部应用程序可以访问 azure 上的 Redis 缓存吗

node.js - 在 ubuntu 12.04- "Project not configured (run ' waf configure' first 上安装 node.js 时出错)“

node.js - 写入生成的进程stdin nodejs?

javascript - 如何获取传递给 Mongoose 模式构造函数的数据

node.js - redis 保存session等数据

Spring Data Redis 多个实例