【问题标题】:Redis in not Giving Expected Result in node jsRedis 在节点 js 中没有给出预期的结果
【发布时间】:2023-01-02 05:52:09
【问题描述】:

我试过使用 php 它给出了预期的结果

  <?php
  $redis = new redis();
  $redis->connect("192.16.200.38", 6378);
  $redis->select(2);
  $result = $redis->hGetAll($key . "myCode");
  print_r($result);

但在节点 js 的情况下没有给出预期的结果

    const client = redis.createClient({
    host: "192.16.200.38",
    port: 6379
  });
  client.on('connect', () => {
     console.log('Connected to Redis');
  });
  client.on('error', (err) => {
     console.log("\n\nError" + err);
  })
  await client.connect();
  await client.select(2);
  const x = await client.hGetAll(key + 'myCode');
  console.log(x);

但是在节点的情况下它没有给出结果而不是它给出的结果

  • 服务器在端口 8000 上启动
  • 连接到 Redis
  • [对象:空原型] {}

【问题讨论】:

    标签: php node.js redis


    【解决方案1】:

    hGetAll 将在您选择的 DB 2 上返回一个对象 您正在访问的密钥不存在,这就是它返回空对象的原因。

    在 PHP 版本上,您正在连接到端口 6378 上的 redis 服务器,而在节点上,您正在访问 6379。

    检查并验证您尝试访问的密钥是否存在于运行在端口 6379 上的 Redis 服务器中

    【讨论】:

    • 不要继续在节点上键入为 8 的端口密钥已经存在于服务器上并且当我在 php 上执行时它会提供所有键和值但它会提供 [Object: null prototype] {} 以防它在节点上执行
    【解决方案2】:

    这是 node.js 中 redis 的默认行为。如果密钥不存在,它将返回 {}

    由于您使用此 ($key . "myCode") 在 php 中获得结果,这意味着此密钥肯定存在。

    在 node.js console.log(key + 'myCode') 中查看该键是否与上面相同。

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 2020-02-25
      • 1970-01-01
      相关资源
      最近更新 更多