即使在 nodejs 中连接 redis 后,Redis 也会出错

Redis giving error even after redis connected in nodejs

我的系统上安装了 redis,运行ning 也安装了它。

我在节点应用程序中使用以下代码来处理 Redis。

redis.js

    const redis = require("redis");

let client = redis.createClient(6379, '127.0.0.1', {});

let isRedis = false;

client.on("connect", function () {
    console.log(`connected to redis`);
    isRedis = true;
});


client.on("error", function (err) {
    console.log("redis connection error " + err);
    throw err;
});

client.on("end", function (err) {
    console.log("redis connection end " + err);
});

module.exports = {
    SetRedis,
    GetKeys,
    GetRedis,
    GetKeyRedis,
    delRedis
};

我正在使用节点 index.js 命令 运行 应用程序,当连接建立时,它也应该给我“连接到 redis”,但我没有在我的控制台上收到此消息。

npm 包也存在于 package.json

我猜你在连接的时候出错了。 应该是

let client = redis.createClient('127.0.0.1', 6379, {});

而不是

let client = redis.createClient(6379, '127.0.0.1', {});

Node Redis 4.x 不允许您传入主机和端口的离散参数。使用 Node Redis 连接到 Redis 的规范示例是这样的:

import { createClient } from 'redis';

(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');
})();

如果你想连接到端口 6379 上本地主机以外的其他地方,我建议使用 URL。像这样:

createClient({ url: 'redis://awesome.redis.server:6380' });

但如果您想要更好的控制,您可以在 GitHub 上的文档中找到所有内容 configuration options

工作redis.js,

    const redis = require("redis");
let isRedis = false;

(async () => {
let client = redis.createClient(6379, '127.0.0.1', {});// create config
client.on("connect", function () {
    console.log(`connected to redis`);
    isRedis = true;
});

client.on("error", function (err) {
    console.log("redis connection error " + err);
    throw err;
});

client.on("end", function (err) {
    console.log("redis connection end " + err);
});

function GetKeyRedis(key) {
    return new Promise(function (resolve, reject) {
        console.log("dd----",key,isRedis);
        if (isRedis) {
            client.get(key).then((data,err) => {
                if(err){
                   reject(err);
                 }
                if(data){
                    resolve(data)
                } else {
                    resolve(false);
                }
            });
        } else {
            resolve(false);
        }
    });
}

module.exports = {
    GetKeyRedis
};

await client.connect();
})();