无法连接到节点中的redis

Cannot conect to redis in Node

我正在尝试创建一个基本的缓存应用程序来测试 redis。我正在使用 Redis 版本:4.0.6.

首先我收到错误 clientclosederror: 客户端已关闭。

然后,在阅读文档后,我添加了

let client;
(async ()=> {
    client = redis.createClient()
    await client.connect()
    
})(); 

但是现在,在尝试 Postman 时,它只是挂起,没有返回任何响应

完整代码:

const express = require("express");
const redis = require("redis");
const axios = require('axios')
const app = express();

let client;

(async ()=> {
    client = redis.createClient()
    await client.connect()   
})(); 

app.get('/result', async (req, res) => {
    const searchTerm = req.query.name;    
    try {

        await client.get(searchTerm, async (err, result) => {
            console.log('cached called')
            if (err) throw err;
            if (result) {
                res.status(200).send({
                    result: JSON.parse(result),
                    message: "data retrieved from the cache"
                });
            }
            else {
                const result = await axios.get(`https://api.agify.io/?name=${searchTerm}`);
                await client.set(searchTerm, JSON.stringify(result.data));
               

                return res.status(200).send({
                    result: result.data,
                    message: "cache miss"
                });
            }
        })

    } catch (error) {
        console.log('get error', error)
        return res.status(500).send({ message: error.message })
    }
})

app.listen(process.env.PORT || 3000, () => {
    console.log("Node server started");
});

client.get 不需要回调函数。它是异步的。我的猜测是它永远不会被调用,因此 Express 不会返回任何东西。

试试这个:

const result = await client.get('foo')
if (result !== null) {
  // it's a hit
} else {
  // it's a miss
}