我编写了一个简单的服务,使用 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 函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)