后台把渠道从“全部”切到“抖音”,数字一动不动,刷新五次后突然变成另一个渠道的数据。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
key = f"report:{name}:{date}:{hash_params(params)}"
redis-cli --scan --pattern 'report:daily:*'
缓存键只拼了报表名和日期,渠道、版本、币种都没进键。第一个请求把全站结果写进去,后面所有筛选都命中同一份。缓存过期时间 10 分钟,所以过一会儿又“自己好了”。这一点先确认清楚,后面就不用反复试。
「报表缓存维度」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
具体做法是,缓存键加入全部筛选维度并排序;维度多时先做参数规范化再哈希;切换筛选时在响应头带上缓存命中标记 便于排查;逐个切换渠道 对比数字和明细。
改完照着核一遍,四个渠道各自返回不同数字,切换后不再出现整站数据。
