[英]Redis disconnection crashing node js server as well
在閱讀了許多堆棧溢出錯誤后,我仍然無法解決這個問題。 我已經設置了一個 redis 服務器來緩存來自我的節點 js 服務器的數據,只要 redis 服務器正在運行,它就可以正常工作,但是一旦我關閉 Z86A1B907D54BF70103794BF316E183E6 服務器就會崩潰即使 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 服務器只是一種支持機制,如果緩存數據不可用,無論如何都會從 db 獲取數據
有沒有辦法檢查redisClient
是否未定義或 null 我可以設置以檢查 redis 服務器是否已關閉,然后我可以使用它來適當地發出請求
根據 node-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");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.