我已经使用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/