quit方法参考文章【这篇文章讲的比较细致】:https://www.jianshu.com/p/40c484710c69
官方文档:https://www.npmjs.com/package/redis
关于quit和and,更建议使用【quit退出方法-优雅退出(这会将quit命令发送到redis服务器,并在正确处理所有正在运行的命令后立即结束)】
总结一句话:quit退出只能处理同一层的异步执行命令【get、set或其他redis操作】,如果出现多层异步嵌套,退出会报错!
正确案例【redis命令必须和quit方法同一层异步调用,否则会报错】:
quit优雅退出,正确的同一层异步嵌套退出处理
OwnRedis.createRedisGetOrSet(async (ownRedis) => {
// 和quit同一层redis的set命令
ownRedis.set("key", "nodejs-redis");
// 和quit同一层redis的get命令
let result = await ownRedis.get("key");
console.log(result);
【优雅退出quit】仅负责处理同一层异步嵌套的命令[get、set或其他redis操作方法],如果多层异步嵌套,quit退出会失败!
ownRedis.quit();
});
错误案例【redis命令必须和quit方法同一层异步调用,否则会报错】:
quit之多层异步嵌套退出错误:redis错误提示:AbortError: SET can't be processed. The connection is already closed.
OwnRedis.createRedisGetOrSet(async (ownRedis) => {
setTimeout(async () => {
// 和quit方法必须在同一层【否则无法正常处理】
ownRedis.set("key", "nodejs-redis");
// // 和quit方法必须在同一层【否则无法正常处理】
let result = await ownRedis.get("key");
console.log(result);
}, 2000);
这里的quit方法[get、set是多层异步嵌套,非同一层,退出会失败,抛出异常!]
redis错误提示:AbortError: SET can't be processed. The connection is already closed.
ownRedis.quit();
});