技术博客
金店参考价格:金价每日 13:40 更新,如何设计缓存策略节省调用成本

金店参考价格:金价每日 13:40 更新,如何设计缓存策略节省调用成本

作者: 万维易源
2026-09-03
金店参考价格金价查询免费接口ShowAPI指南
# 金店参考价格:金价每日 13:40 更新,如何设计缓存策略节省调用成本 > 接口 2145(金店参考价格)· 免费但有档位限流 · 适用人群:已接入用户、架构师 · 阅读时间约 5 分钟 ## 核心要点 - 最新价格每天仅 13:40 更新一次,因此同一天的重复查询可安全缓存。 - 按「品牌 _id」做缓存键,TTL 设为到次日 13:40 之后刷新。 - 品牌清单(2145-1)更新更慢,可缓存数天,进一步减少调用。 ## Why:这跟我有什么关系 接口虽免费,但有使用档位限制。金价一天只变一次,如果每次页面打开都打接口,既浪费档位又拖慢响应。合理的缓存能同时满足「省钱」和「快」。 ## What:前置条件与接口速览 **两种数据的缓存节奏** | 数据 | 更新频率 | 建议缓存 | |---|---|---| | 品牌清单(2145-1) | 每年不定期 | 服务端缓存 1~7 天,失效回源 | | 金价(2145-2) | 每天 13:40 | 按 _id 缓存,TTL 到次日 13:50 强制刷新 | ## How:接入步骤 **Redis 缓存示例(金价)** ```python import redis, requests, time r = redis.Redis() def get_price(appkey, brand_id): key = f"gold:{brand_id}" cached = r.get(key) if cached: return cached.decode() # 当天 13:40 前不会变 body = requests.post("https://route.showapi.com/2145-2", params={"appKey": appkey}, data={"id": brand_id}, timeout=10).json()["showapi_res_body"] if body["ret_code"] != 0: return None # TTL 设到明天 13:50,确保跨过 13:40 更新点 ttl = int((next_day_1350() - time.time())) r.setex(key, ttl, str(body["goldPrice"])) return body["goldPrice"] ``` ## 返回示例与解析 **缓存命中示意** ``` 请求金价 -> Redis 命中 -> 直接返回(0 次接口调用) 请求金价 -> Redis 未命中 -> 调 2145-2 -> 写缓存 -> 返回 ``` 完整字段与状态码见[金店参考价格:返回字段与状态码全解](https://www.showapi.com/guides/gold-price-response-codes-2145)。 ## 进阶 / 边界 - 缓存的是「当天报价」,不是实时行情;展示时标注「参考价 / 数据日期」更稳妥。 - 免费档位下,全品牌遍历(N 次 2145-2)建议凌晨 13:40 后批量预热,避免白天峰值触发限流。 - 缓存失效策略要跨过 13:40 更新点,否则可能一直读到旧价。 ## FAQ **Q:缓存一天会不会拿到过时价格?** 不会过时,因为接口本身每天只在 13:40 更新一次。缓存到次日 13:40 后刷新,与官方更新节奏一致。 **Q:品牌清单也要缓存吗?** 建议缓存。2145-1 每年才不定期更新一次,缓存 1~7 天可显著减少调用。 **Q:免费接口为什么还要省调用?** 免费但有使用档位限制,超额会被限流;缓存既保稳定又避免触顶。具体档位以官方说明为准。 ## 相关能力 / 下一步阅读 - [金店参考价格:高并发 / 批量集成架构](https://www.showapi.com/guides/gold-price-architecture-2145) - [金店参考价格:两步调用工作流](https://www.showapi.com/guides/gold-price-two-step-2145) - [金店参考价格:返回字段与状态码全解](https://www.showapi.com/guides/gold-price-response-codes-2145) - **本系列共 12 篇**:查看[金店参考价格 · 官方指南总目录](https://www.showapi.com/guides/gold-price-guides-2145)