如何使用MongoDB实现Redis Cache?

时间:2019-01-23 10:26:20

标签: mongodb redis

const redis = require('redis'); 
const getAsync = promisify(client.get).bind(client);

router.get('/get_all', async (req, res) => {
     let language = req.query.language;
     let data = '';
     try { 
         data = await getAsync(language);
     }
     catch (err) {
         console.log(err);
     }

     if (data) {
        console.log('Data is received from Redis Cache!');
        res.send(data);
     }
     else {
        try {
            const result = await Users.find({
               language: language
            });
            client.setex(language, 86400, JSON.stringify(result));
            res.send(result);
        }
        catch (err) {
           console.log('ERROR');
           console.log('MONGO DB RETURNED THE FOLLOWING ERROR');
           console.log(err);
           res.end();
       }   
     }
}

这就是我用mongod db实现redis缓存的方式。
*这是实施的正确方法吗?
如果有误,请告诉我如何执行。

我现在面临的一个问题是,如果我添加try和catch块到     const data = await getAsync(language);

我遇到错误。

  

UnhandledPromiseRejectionWarning:未处理的承诺拒绝。该错误是由不带catch>块的异步函数内部抛出,或者是拒绝了.catch()无法处理的诺言而引起的。 >(拒绝ID:2)

使用两个try和catch块编辑了代码。
这是用mongo实现redis的好方法吗?

0 个答案:

没有答案