MST

星途 面试题库

面试题:Node.js缓存策略之基础应用

在Node.js项目中,你会如何使用简单的内存缓存策略来优化频繁访问数据库的接口性能?请描述具体实现思路,并写出关键代码示例。
10.6万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 初始化缓存对象:在Node.js应用程序启动时,创建一个空的JavaScript对象用于存储缓存数据。
  2. 检查缓存:在每次请求访问数据库的接口时,首先检查缓存中是否已经存在所需数据。如果存在,则直接返回缓存数据,避免访问数据库。
  3. 更新缓存:当从数据库获取到新数据后,将数据存入缓存中,以便后续请求使用。同时,可以设置缓存的过期时间,当缓存过期后,再次请求时会重新从数据库获取数据。

关键代码示例

// 引入Node.js内置模块
const http = require('http');
// 模拟数据库查询函数
const queryDatabase = () => {
    // 这里可以是实际的数据库查询逻辑,返回一个Promise
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve('从数据库获取的数据');
        }, 1000);
    });
};
// 缓存对象
let cache = {};
// 缓存过期时间(毫秒)
const CACHE_EXPIRE_TIME = 5 * 1000; // 5秒
const server = http.createServer(async (req, res) => {
    const cacheKey = 'your_database_query_key';
    if (cache[cacheKey] && Date.now() - cache[cacheKey].timestamp < CACHE_EXPIRE_TIME) {
        res.end(cache[cacheKey].data);
    } else {
        const data = await queryDatabase();
        cache[cacheKey] = {
            data,
            timestamp: Date.now()
        };
        res.end(data);
    }
});
const port = 3000;
server.listen(port, () => {
    console.log(`Server running on port ${port}`);
});