Redis连接到127.0.0.1:6379失败 - 连接ECONNREFUSED。

188

我正在使用expressjs的node.js,尝试将一个帐户存储到会话中。因此,我尝试使用expressjs中的代码来测试使用会话。

var RedisStore = require('connect-redis')(express);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat", store: new RedisStore }));

但我收到了错误信息 Redis连接到127.0.0.1:6379失败 - 连接被拒绝
请帮助我解决这个问题。


3
Redis是否在运行?您能通过其他方式(例如redis-cli)连接到它吗? - a sad dude
4
谢谢,因为 Redis 服务器没有运行。我按照这个教程安装了 Redis 服务器。 - Huy Tran
你应该在你的机器上安装Redis服务器并运行它。我不知道为什么作者在手册中没有提到这个重要的事情! - Emad Aghaei
2
我该如何为我的Node Heroku应用程序添加redis-server?我也遇到了同样的错误。 - amar ghodke
20个回答

265

在安装完redis后,从终端输入以下命令:

redis-server

然后你就会有运行中的 Redis 了。


3
对于我来说,我应该指定配置文件,所以我输入 >>(sudo)redis-server /etc/redis/redis.conf。 - Romans 8.38-39
6
谢谢。教程中从未提到如何启动Redis服务器,这太愚蠢了! - Codious-JR
13
使用命令 redis-server --daemonize yes 可以让 Redis 在后台运行。 - Morteza
1
@morteza-ziyae 我该如何停止后台运行的 Redis 服务器? - Edison Pebojot

77

我用以下方法解决了这个问题:

sudo apt-get install redis-server

然后运行命令确认一切正常:

sudo service redis-server status

输出结果将为:redis-server is running - 这意味着问题已解决。


1
那个错误已经被修复了,但现在出现了新的错误,即“错误:'set'命令的参数数量错误”。 - vineet
1
谢谢!这解决了问题,在Linux/WSL环境中安装后,重新运行命令redis-server或在需要时加上sudo前缀。如果一切顺利,您将看到redis-server cli消息。也可以通过作者建议的sudo service redis-server status进行验证。 - just-be-weird

52

首先在您的系统上安装 Redis -

brew install redis

然后启动Redis服务器 -

redis-server

4
使用"brew services start redis"启动Redis更好。 - MartianMartian

23

21

如果您正在使用docker-compose和Typescript,我的解决方案是:

import { RedisClient } from 'redis';

 const pubClient = new RedisClient({ url: 'redis://redis:6379' });

import { createClient } from 'redis';

const pubClient = createClient({ url: 'redis://redis:6379' });

docker-compose.yml

->

docker-compose.yml

version: '3.9'

services:
  main:
    build:
      context: .
      target: development
    ports:
      - ${PORT}:${PORT}
    volumes:
      - ./src:/usr/src/app/src
      - /app/node_modules
    env_file:
      - .env
    command: npm run start:dev
    depends_on:
      - mongo
      - redis
  mongo:
    image: mongo:5.0.2-focal
    volumes:
      - mongo-data:/data/db
  mongo-express:
    image: mongo-express:0.54.0
    ports:
      - 8081:8081
    depends_on:
      - mongo
  redis:
    image: redis:6.2.5-alpine

volumes:
  mongo-data:

1
谢谢,它解决了我的问题,不知道为什么它不接受端口和主机作为输入。 - kiranr

15

简单解决方案:

只需执行以下命令一次,然后重新启动服务器

redis-server

6

使用Windows 10? 请访问此链接:https://learn.microsoft.com/en-us/windows/wsl/wsl2-install

然后运行...

    $ wget https://github.com/antirez/redis/archive/5.0.5.tar.gz <- change this to whatever Redis version you want (https://github.com/antirez/redis/releases)
    $ tar xzf redis-5.0.5.tar.gz
    $ cd redis-5.0.5
    $ make

5

对于Windows用户,您可以使用chocolatey来安装Redis。

choco install redis-64

接着从以下位置启动服务器:

C:\ProgramData\chocolatey\lib\redis-64\redis-server.exe

4

我也遇到了同样的问题,首先我尝试通过sudo service restart重新启动redis-server,但问题仍然存在。然后我通过sudo apt-get purge redis-serverredis-server删除,再通过sudo apt-get install redis-server重新安装它,这样redis就恢复正常了。此外,值得注意的是查看redis日志,其路径为/var/log/redis/redis-server.log


3

我使用的是Ubuntu 12.04系统。通过安装redis-server软件包,我解决了这个问题。

适用于Ubuntu 12.04的redis-server安装教程

有些配置需要root权限。同时,该链接中也列出了其他操作系统的手册。

谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接