Redis,客户端关闭了

问题描述 投票:0回答:1

我正在尝试将 Redis 实现到我的 Nodejs 和 ExpressJS API REST 中,但由于某种原因,我收到错误

The client is closed

  1. 我已经安装了 Windows 版的 Redis
  2. 我已经在cmd中运行了
    redis-server
  3. 我通过运行
    redis-cli
    然后通过
    ping
    测试了 redis cli。
    PONG
    已被记录为结果,因此它正在工作。

创建了中间件init_redis.js

const redis = require('redis');
const redisClient = redis.createClient({
    host: 'localhost',
    port:  6379,
});

redisClient.on('connect', () => {
    console.log('Redis connected to localhost');
});

redisClient.on('ready', () => {
    console.log('Redis is ready');
});

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

process.on('SIGTERM', () => {
    redisClient.quit();
});

module.exports = redisClient;

我尝试在我的 server.js 中测试 redis

const express = require('express');
const cors = require('cors');
const sequelize = require('./config/db');
const dotenv = require('dotenv');
const cookieParser = require('cookie-parser');
const redisClient = require('./middleware/init_redis');


// Correct usage of Redis commands
redisClient.set('foo', 'bar', (err, reply) => {
  if (err) throw err;
  console.log(reply);
});

redisClient.get('foo', (err, result) => {
  if (err) throw err;
  console.log(result);
});

当我运行 Nodejs 服务器时,我得到

The client is closed
。如果我的 Redis 服务器正在运行并且我正在连接我的客户端,为什么会发生这种情况?

node.js express redis
1个回答
0
投票

假设您在 npm 中使用最新版本的

redis
(4.6.13),据记录Redis包中的函数
createClient
是异步的,这意味着您必须等待建立连接才能工作正确。

请注意,您调用了 createClient 但不处理 Promise,也不在函数调用中调用

await
( https://www.npmjs.com/package/redis#basic-example )。

require 调用创建客户端,然后尝试立即使用它,从而导致您收到错误。您在使用客户端之前不允许客户端成功建立连接。

© www.soinside.com 2019 - 2024. All rights reserved.