node.js redis 的 hello world 没有任何输出

No any output from hello world of node.js redis

我正在学习 Maxwell Dayvson Da Silva 和 Hugo Lopes Tavares 合着的 Redis Essentials 一书。它告诉redis in node.js。本书中的 node.js 非常古老,即 v0.12.4。我的 Ubuntu 20.04 上的 node.js 是 v10.19.0。我现在在 python 工作。但我对浏览器中的 JS 很熟悉,希望自己能过关,所以我决定尝试 node.js。你能告诉我为什么当我可以在 redis-cli 中打乒乓时下面的代码没有任何输出吗?如下图:

$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> SET key001 value001
OK
127.0.0.1:6379> GET key001
"value001"
127.0.0.1:6379> QUIT

$ node hello.js
$

(我已经修复了第2行和第3行之间的问题,即显式连接。)

(我感觉根本原因可能是我的node.js版本比书上的版本高太多了,我猜是进程在执行打印之前就退出了。但是我不熟悉当前的node.js。请帮帮我!)

//hello.js
var redis = require("redis"); // 1
var client = redis.createClient(); // 2
client.connect(); // Important: explict conn is needed now!
client.set("my_key", "Hello World using Node.js and Redis"); // 3
client.get("my_key", redis.print); // 4
client.quit(); // 5

这是因为 nodejsredis client 的实现使用了 Asyc/Await 方法。

因此,您可能需要执行如下操作。

(async () => {
  const client = createClient();

  client.on('error', (err) => console.log('Redis Client Error', err));

  await client.connect();

  await client.set('key', 'value');
  const value = await client.get('key');
  await client.quit();
})();

参考:https://github.com/redis/node-redis