连接redis时报错The client is closed,注意redis4和redis3的不同

Node.js 连接redis时报错:The client is closed
贴一下报错信息:
在这里插入图片描述
看下自己装的是不是v4版本的redis。v4版本的使用方式和v3略有不同。

解决方法一

退回到v3版本:

npm uninstall redis
npm install redis@3.1.2 --save

解决方法二

在代码里加上:

 redisClient.connect()

完整示例:

const redis = require('redis')

// 创建客户端
const redisClient = redis.createClient(6379, '127.0.0.1')

// 连接客户端和服务端【多了这步!!】
redisClient.connect().then(() => {
    
    
  console.log('Redis connection is successful!')
}).catch(console.error)

// 简单测试一下
redisClient.set('name', 'gougou')
redisClient.get('name', (err, val) => {
    
    
  if(err) return console.error(err)
  console.log('name:', val)
})
// 退出
redisClient.quit()

执行一下看下打印结果:
在这里插入图片描述
ok,连接成功啦!

知识点补充

redis v4版本最大的不同应该是支持了await写法。
可以去npm看下官方的基本示例:
在这里插入图片描述
所以我们安装了v4的话,可以这样写:

const redis = require('redis')

!(async function() {
    
    
  // 创建客户端
  const redisClient = redis.createClient(6379, '127.0.0.1')
  // 监听错误
  redisClient.on('error', (err) => console.log('Redis Client Error', err));
  // 连接
  await redisClient.connect()
  console.log('Redis connection is successful!')

  // 简单测试一下
  await redisClient.set('name', 'suli')
  const name = await redisClient.get('name')
  console.log('name:', name)

  // 退出
  redisClient.quit()
})()

看下执行结果:
在这里插入图片描述

补充:如果看的这样的报错,注意一下是否忘了启动redis。勿忘redis-server
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dongkeai/article/details/127462318