【问题标题】:Can't SET/GET with NodeJS and Redis无法使用 NodeJS 和 Redis 设置/获取
【发布时间】:2011-12-03 00:42:56
【问题描述】:

我想为我的 Etherpad 编写一个 ueberDB Redis-Handler。

我绝对不明白我的问题,因为使用 PHP 我可以毫无问题地设置和获取键/值。它仅不适用于 NodeJS。

这是一个示例代码:

var redis = require("redis");
client = redis.createClient();
client.on("error", function (err) {
  console.log("Error " + err);
});

client.set("test", "string val", redis.print);
console.log(client.get("test"));

我做错了什么?也许有人给我一个小费。

【问题讨论】:

  • 您是否正确设置了主机和端口选项? redis.createClient(port, host, options)

标签: node.js redis key-value etherpad


【解决方案1】:

首先,您需要知道您的redis 客户端是否已连接。您可以使用 console.log(client) 检查,您将看到一个名为“已连接”的变量。你应该看到“真”

如果你想在 node 中使用 redis,你应该使用类似这样的东西

    client.set("test","val", function(err) {
        if (err) {
           // Something went wrong
           console.error("error");
        } else {
            client.get("test", function(err, value) {
                 if (err) {
                     console.error("error");
                 } else {
                     console.log("Worked: " + value);
                 }
            });
        }
    });

请记住,所有 redis 函数都是异步的。

【讨论】:

  • 好吧,请确保您已连接到redis,您可以在CLI 中使用“redis-cli”命令查看redis 的内容
  • redis 127.0.0.1:6379> set test test OK redis 127.0.0.1:6379> get test "test" redis 127.0.0.1:6379> exit [root@123 tmp]# node 1.js [root@123 tmp]#
  • 欢迎接受这个答案。由于您是新手:请阅读常见问题解答 (stackoverflow.com/faq)
【解决方案2】:

如果从接受的答案中不明显,则发布的代码失败的原因是由于异步性。

您在 set() 完成之前调用 get()。

【讨论】:

  • 您好,先生,您提到的解决这种异步性的 js 或 nodejs 方式是什么。好像 JS 的事件驱动做事方式在这里碍事了……
猜你喜欢
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 2020-02-23
  • 2013-09-01
  • 1970-01-01
  • 2020-10-01
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多