Skip to content

Commit 9c9fd21

Browse files
committed
fix news cache lost bug
1 parent 805115b commit 9c9fd21

3 files changed

Lines changed: 103 additions & 74 deletions

File tree

.idea/workspace.xml

Lines changed: 73 additions & 74 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/com/phantoms/phantomsbackend/service/scheduler/FF14GlobalNewsScheduler.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,21 @@ public void fetchAndSendFF14GlobalNews() {
105105
.filter(news -> !finalCachedIds.contains(news.getId()))
106106
.collect(Collectors.toList());
107107

108+
// 如果新新闻数量超过5条,判定为缓存丢失
109+
if (newNewsList.size() > 5) {
110+
logger.warn("检测到缓存丢失,新新闻数量 {} 条超过阈值,使用最新新闻更新缓存", newNewsList.size());
111+
// 更新缓存为当前所有新闻ID,不发送消息
112+
try {
113+
redisUtil.set(FF14_GLOBAL_NEWS_CACHE_KEY, currentIds);
114+
inMemoryCache = new ArrayList<>(currentIds);
115+
logger.info("缓存已更新,共 {} 条国际服新闻ID", currentIds.size());
116+
} catch (Exception e) {
117+
logger.warn("Redis更新缓存失败,仅更新内存缓存: {}", e.getMessage());
118+
inMemoryCache = new ArrayList<>(currentIds);
119+
}
120+
return;
121+
}
122+
108123
if (!newNewsList.isEmpty()) {
109124
logger.info("发现 {} 条FF14国际服新新闻", newNewsList.size());
110125
sendNewsToGroup(newNewsList);

src/main/java/com/phantoms/phantomsbackend/service/scheduler/FF14NewsScheduler.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,21 @@ public void fetchAndSendFF14News() {
105105
.filter(news -> !finalCachedIds.contains(news.getId()))
106106
.collect(Collectors.toList());
107107

108+
// 如果新新闻数量超过5条,判定为缓存丢失
109+
if (newNewsList.size() > 5) {
110+
logger.warn("检测到缓存丢失,新新闻数量 {} 条超过阈值,使用最新新闻更新缓存", newNewsList.size());
111+
// 更新缓存为当前所有新闻ID,不发送消息
112+
try {
113+
redisUtil.set(FF14_NEWS_CACHE_KEY, currentIds);
114+
inMemoryCache = new ArrayList<>(currentIds);
115+
logger.info("缓存已更新,共 {} 条新闻ID", currentIds.size());
116+
} catch (Exception e) {
117+
logger.warn("Redis更新缓存失败,仅更新内存缓存: {}", e.getMessage());
118+
inMemoryCache = new ArrayList<>(currentIds);
119+
}
120+
return;
121+
}
122+
108123
if (!newNewsList.isEmpty()) {
109124
logger.info("发现 {} 条新新闻", newNewsList.size());
110125
sendNewsToGroup(newNewsList);

0 commit comments

Comments
 (0)