refactor(statistics): 重构应用统计漏斗服务的Redis缓存逻辑

- 移除固定的Redis缓存key,改为包含日期维度的动态key
- 修复日期范围检查逻辑中的时间顺序问题
- 统一多处相同的日期范围条件判断代码
- 移除实时模式下的数据持久化操作以避免缓存污染
This commit is contained in:
2026-02-05 00:58:14 +08:00
parent ee1eb8cde9
commit 6c330764ea
2 changed files with 14 additions and 16 deletions

View File

@@ -93,8 +93,8 @@ public class ScenicStatsTask {
// 写入数据库(REPLACE INTO 会自动更新已存在的记录)
statisticsMapper.insertStat(scenicId, startTime, data);
// 删除该景区的缓存,确保下次查询时获取最新数据
invalidateStatisticsCache(scenicId);
// 删除该景区该日期的缓存,确保下次查询时获取最新数据
invalidateStatisticsCache(scenicId, startTime);
} catch (Exception e) {
log.error("统计景区 {} 在日期 {} 的数据时发生错误", scenic.getId(), DateUtil.formatDate(startTime), e);
}
@@ -109,9 +109,12 @@ public class ScenicStatsTask {
/**
* 删除景区统计缓存
* @param scenicId 景区ID
* @param date 统计日期
*/
private void invalidateStatisticsCache(Long scenicId) {
String redisKey = "statistics:tmp_cache:" + scenicId;
private void invalidateStatisticsCache(Long scenicId, Date date) {
String redisKey = String.format("statistics:tmp_cache:%s:%s",
scenicId,
DateUtil.formatDate(date));
redisTemplate.delete(redisKey);
}
}