数据缓存与更新频率怎么看
两个页面同一时间显示不同数字,有时不是谁错了,而是它们读的是不同时刻生成的缓存。把「生成时间」记下来,差异通常就能解释。
缓存是什么
缓存是把一次取数的结果存起来,后续访问优先读这份已存结果,而不是每次都重新向数据源请求。缓存时长决定这份结果被复用多久,例如设定 24 小时,就表示同一次结果在 24 小时内会被反复使用。
举例:某份缓存在 09:00 生成,缓存时长 24 小时,那么在 09:00 到次日 09:00 之间读取,拿到的都是 09:00 那一版。若把 24 小时换算成分钟:24 × 60 = 1,440 分钟;换算成秒:1,440 × 60 = 86,400 秒。
命中与回源
读到已有缓存叫命中;缓存过期或不存在时重新取数叫回源。命中不产生新的网络请求,回源会产生。二者返回的数字可能相同(数据源没变),也可能不同(数据源更新了)。
举例:某日 400 次取数额度,若 300 次由缓存命中、100 次回源,则实际消耗额度 100 次,剩余 = 400 − 100 = 300 次。若把命中也计成消耗,会误以为额度已用掉 400 次。记录时把「请求次数」和「回源次数」分成两列,就不会混淆。
更新频率与数据日期是两回事
更新频率说的是「多久去取一次」,数据日期说的是「取回来的这份对应哪个交易日」。举例:页面每 15 分钟刷新一次,但每次读到的仍是同一交易日的定稿数据,那么数据日期不变,只有生成时间在变。
校验:一天 24 小时,每 15 分钟一次,理论刷新次数 = 24 × 60 ÷ 15 = 96 次。刷新 96 次不代表有 96 个不同的数据日期,最多仍只有 1 个交易日。
缓存不改变口径定义
缓存只影响数据的新旧,不改变指标怎么算。净额仍然是买入方向减卖出方向,占比仍然是分子除以分母。若两份缓存的数值对不上,先比生成时间与数据日期,再比口径版本,不要去改公式。
记录表里建议保留三列:生成时间、数据日期、口径版本。三者齐了,绝大多数「数字对不上」都能定位到具体原因。
| 项目 | 数值 | 说明 |
|---|---|---|
| 缓存时长 | 24 小时 | 1,440 分钟 / 86,400 秒 |
| 请求次数 | 400 次 | 含命中与回源 |
| 回源次数 | 100 次 | 真正消耗额度 |
| 剩余额度 | 300 次 | 400 − 100 |
| 每 15 分钟刷新 | 96 次/日 | 数据日期仍只有 1 个 |
常见误区
- 把缓存命中也计入取数额度,误判额度已耗尽。
- 把刷新次数当成数据日期个数。
- 两份缓存数值不同就去改计算公式,而不是先比生成时间。
- 表里不记生成时间,事后无法判断数据新旧。
常见问题
缓存 24 小时是不是数据 24 小时不更新?
它表示同一次取数结果最多被复用 24 小时,具体是否更新还取决于过期后有没有新访问触发回源。
刷新了 96 次,是不是有 96 天的数据?
不是。刷新次数与数据日期个数无关,一天最多对应一个交易日。
缓存会让指标算法变吗?
不会。缓存只影响读到哪一版结果,不改变口径定义。