You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJS中将第三方API返回的字典列表存入Redis?

实现Node.js应用将第三方API数据存入Redis

我来一步步帮你搞定这个需求,咱们用官方的redis客户端包来实现,步骤清晰易懂:

1. 安装必要依赖

首先得安装Redis客户端和HTTP请求工具(这里用node-fetch,你也可以换成axios):

npm install redis node-fetch

2. 连接Redis客户端

先创建Redis连接,确保你的Redis服务已经启动(本地默认端口6379,要是用远程Redis或者有密码,记得配置对应参数):

import { createClient } from 'redis';
import fetch from 'node-fetch';

// 创建Redis客户端实例
const redisClient = createClient({
  // 远程Redis或带密码的配置示例:
  // url: 'redis://username:password@your-redis-host:6379'
});

// 监听连接错误
redisClient.on('error', (err) => console.error('Redis连接出错:', err));

// 连接Redis
await redisClient.connect();

3. 获取第三方API数据

写个函数发送GET请求,解析返回的字典列表:

async function fetchThirdPartyData() {
  try {
    const response = await fetch('https://your-third-party-api-url.com/data');
    if (!response.ok) {
      throw new Error(`API请求失败,状态码: ${response.status}`);
    }
    const dataList = await response.json();
    console.log('成功获取API数据:', dataList);
    return dataList;
  } catch (err) {
    console.error('获取API数据时出错:', err);
    throw err; // 抛出错误让上层处理
  }
}

4. 将数据存入Redis

这里给你两种常见存储方式,按需选择:

方式一:整体存储为JSON字符串(适合需要一次性读取全量数据的场景)

用Redis的SET命令,把数组序列化为JSON字符串存入,还可以设置过期时间:

async function saveWholeListToRedis(dataList) {
  try {
    // 存入Redis,设置1小时过期时间(可选)
    await redisClient.set('api:data:full-list', JSON.stringify(dataList), {
      EX: 3600
    });
    console.log('全量数据成功存入Redis');
  } catch (err) {
    console.error('存入Redis出错:', err);
    throw err;
  }
}

方式二:逐个存入Redis List(适合需要单独操作每个元素的场景)

用RPUSH把每个字典元素添加到Redis列表中,先清空旧列表避免数据重复:

async function saveItemsToList(dataList) {
  try {
    // 先清空旧列表(可选操作)
    await redisClient.del('api:data:item-list');
    // 逐个添加元素到列表
    for (const item of dataList) {
      await redisClient.rPush('api:data:item-list', JSON.stringify(item));
    }
    console.log('列表元素成功存入Redis');
  } catch (err) {
    console.error('存入Redis列表出错:', err);
    throw err;
  }
}

5. 完整调用示例

把上面的函数整合起来,执行整个流程:

async function main() {
  try {
    // 连接Redis
    await redisClient.connect();
    // 获取API数据
    const dataList = await fetchThirdPartyData();
    // 选择一种存储方式执行
    await saveWholeListToRedis(dataList);
    // 或者 await saveItemsToList(dataList);

    // 可选:验证读取数据
    const storedData = await redisClient.get('api:data:full-list');
    console.log('从Redis读取的全量数据:', JSON.parse(storedData));
  } catch (err) {
    console.error('整体流程执行出错:', err);
  } finally {
    // 关闭Redis连接
    await redisClient.disconnect();
  }
}

// 启动主流程
main();

注意事项

  • 确保Redis服务正常运行,本地开发可以用Docker快速启动,或者直接安装Redis。
  • 如果API返回数据量很大,建议用Redis管道(pipeline)批量操作,提升性能。
  • 记得处理各种异常情况:Redis连接失败、API请求失败、序列化/反序列化错误等。

内容的提问来源于stack exchange,提问作者bellyflop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:13:28