MST

星途 面试题库

面试题:Node.js中如何利用Redis实现简单的缓存功能

假设你正在开发一个Node.js应用,有一个频繁调用的API接口获取数据,为了提升性能,需要利用Redis进行缓存。请描述实现思路,并给出关键代码示例。
12.7万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 安装依赖:在Node.js项目中安装redis模块,用于与Redis交互。
  2. 连接Redis:创建一个Redis客户端实例并连接到Redis服务器。
  3. 检查缓存:在调用API接口前,先检查Redis中是否存在所需数据。如果存在,直接返回缓存数据,避免重复调用API。
  4. 缓存数据:调用API获取数据后,将数据存入Redis缓存中,设置合适的过期时间(根据数据更新频率而定),以便下次使用。

关键代码示例

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

// 创建Redis客户端
const client = redis.createClient();

// 将get和set方法转为Promise形式
const getAsync = promisify(client.get).bind(client);
const setAsync = promisify(client.setex).bind(client);

async function getDataFromAPI() {
    // 模拟API调用,这里用Promise.resolve模拟返回数据
    return Promise.resolve('API返回的数据');
}

async function getData() {
    // 尝试从Redis获取数据
    let data = await getAsync('api_data_key');

    if (data) {
        console.log('从缓存中获取数据');
        return data;
    } else {
        // 缓存中没有,调用API获取数据
        data = await getDataFromAPI();
        // 将数据存入Redis缓存,设置过期时间为60秒
        await setAsync('api_data_key', 60, data);
        console.log('从API获取数据并存入缓存');
        return data;
    }
}

// 测试
getData().then(data => {
    console.log('最终获取到的数据:', data);
}).catch(err => {
    console.error('获取数据出错:', err);
});