nodejs redis(cache)错误处理-如何忽略错误?

h43kikqp  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(337)

目前我有一个cache.js文件来启动redis,以便重用连接。
缓存.js

const redis = require('redis');
const { promisify } = require("util");

const client = redis.createClient({ host: process.env.REDIS_HOST, port: process.env.REDIS_PORT, password: process.env.REDIS_PASSWORD })

client.on('error', function(err) {
    console.log('error encountered', err.toString())
    return null
});

const getAsync = promisify(client.get).bind(client);
const setAsync = promisify(client.set).bind(client);
const setexAsync = promisify(client.setex).bind(client);
module.exports = { getAsync, setAsync, setexAsync }

我如何使用它。

try {
    const redis = require('lib/cache')
    const results = await redis.getAsync(key)
    if (results) {
        return res.json(JSON.parse(results));
    }

} catch(err) {
    console.log('redis error => ', err) //this is not important, I want to proceed to get data from db.
}
....... continue codes to get data from database since there's no cache.

这一切都很好,直到出现错误(例如redis服务器关闭、redis连接不可用、密码错误等),节点应用程序卡住为止。
它在console.log发出的.on('error')事件返回错误后不会继续。
我想要什么。因为我将它用作缓存,所以我希望它继续服务并从数据库返回数据,而忽略缓存。redis缓存的可用性在我的应用程序中并不重要。
我怎样才能达到我想要的?
我尝试在emit事件中返回null,但不起作用,我还尝试从.on('error')事件抛出错误,但没有抛出错误。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题