为什么回调对节点上的 Redis 不起作用

Why doesn't callback work for Redis on node

以下代码适用于redis 3.1.2 版本,但是当我将redis 库升级到4.1.0 时,回调停止工作。本地主机上有一个没有密码的 REDIS 服务器 运行ning。我正在使用节点 16 LTS。

'use strict'
import {createClient} from 'redis';
const redisClient = createClient();

redisClient.on('connect', function() {
    console.log('you are now connected');
});
redisClient.on('ready', function() {
    console.log('you are now ready');
});
redisClient.on('error', function(err) {
    console.log(`redis error: ${err}`)
});

// added for 4.1.0 because there is no autoconnect.
await redisClient.connect();

await redisClient.set("test","value", function(err, reply) {
    console.log('set complete');
});

当我 运行 在 Redis 客户端 3.1.2 上执行此操作时,调用 set 后我得到“set complete”。在 Redis 客户端 4.1.0 上,我什么也得不到,就好像没有调用回调一样。即使未触发回调,该值也会设置在 REDIS 数据库中。我使用 redis cli 验证了该值。没有错误消息。我确实收到了连接和就绪事件消息。

我在这里错过了什么?我很确定我忽略了一些简单的事情。

Node Redis 4.x 遵循 semver 约定,引入了许多重大更改。其中之一是它使用承诺而不是回调。您可以在 https://github.com/redis/node-redis.

阅读所有详细信息