Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Redis断开连接也会导致节点js服务器崩溃_Javascript_Node.js_Redis - Fatal编程技术网

Javascript Redis断开连接也会导致节点js服务器崩溃

Javascript Redis断开连接也会导致节点js服务器崩溃,javascript,node.js,redis,Javascript,Node.js,Redis,在阅读了许多堆栈溢出错误后,我仍然无法解决这个问题。我已经设置了一个redis服务器来缓存来自我的node js服务器的数据,只要redis服务器正在运行,它就可以正常工作,但一旦我关闭redis服务器,节点服务器就会崩溃。我希望即使redis服务器关闭,服务器也能继续工作 这是我的密码 import Product from '../models/productModel.js' import User from '../models/userModel.js' import slugify

在阅读了许多堆栈溢出错误后,我仍然无法解决这个问题。我已经设置了一个redis服务器来缓存来自我的node js服务器的数据,只要redis服务器正在运行,它就可以正常工作,但一旦我关闭redis服务器,节点服务器就会崩溃。我希望即使redis服务器关闭,服务器也能继续工作

这是我的密码

import Product from '../models/productModel.js'
import User from '../models/userModel.js'
import slugify from 'slugify'
import redis from 'redis'
import mongoose from 'mongoose'

//connection to redis
const redisClient = redis.createClient(6379)  //cause for error when redis server is down



export const listAll = async (req, res) => {
try {
const products = await Product.find({})
  .limit(parseInt(req.params.count))
  .populate('category')
  .populate('subs')
  .sort([['createdAt', 'desc']])
  .exec()
 if (products !== null) {
  redisClient.setex(req.params.count, 60, JSON.stringify(products))
 }
res.json(products)
} catch (err) {
console.log(err)
}
}
在这里,当我停止redis服务器时,我得到了一个
ECONNREFUSED
错误。我的节点服务器是否有办法在redis服务器停止时继续运行,因为redis server只是一种支持机制,如果缓存数据不可用,我将从数据库获取数据


是否有一种方法可以检查redisClient是否未定义或为空,我可以将其设置为检查redis服务器是否已关闭,然后我可以使用它根据节点redis的文档适当地发出请求,您尝试过吗

client.on("error", function(err) {
  assert(err instanceof Error);
  assert(err instanceof AbortError);
  assert(err instanceof AggregateError);

  // The set and get are aggregated in here
  assert.strictEqual(err.errors.length, 2);
  assert.strictEqual(err.code, "NR_CLOSED");
});