缓存倒排

This commit is contained in:
2026-04-20 19:08:15 +08:00
parent a9cb0b2481
commit e1915c9dde
+15 -2
View File
@@ -54,6 +54,7 @@ type urlKeywordsEntry struct {
Title string // 页面标题(从 Redis Snippet 缓存获取)
Snippet string // 摘要(从 Redis Snippet 缓存获取)
Keywords []urlKeywordInfo // 关键词列表
UpdatedAt time.Time // 最后更新时间(用于倒序排列)
}
// urlKeywordInfo 单个关键词信息
@@ -92,10 +93,11 @@ func (c *urlKeywordsCache) Put(url string, title, snippet string, keywords []url
e.Keywords = keywords
e.Title = title
e.Snippet = snippet
e.UpdatedAt = time.Now()
entry = e
} else {
// 新增到队尾
entry = &urlKeywordsEntry{URL: url, Title: title, Snippet: snippet, Keywords: keywords}
entry = &urlKeywordsEntry{URL: url, Title: title, Snippet: snippet, Keywords: keywords, UpdatedAt: time.Now()}
elem := c.order.PushBack(entry)
c.items[url] = elem
@@ -254,6 +256,12 @@ func (c *urlKeywordsCache) ListAll() []*urlKeywordsEntry {
seen[entry.URL] = true
}
}
// 按 UpdatedAt 倒序排序(最新在前)
sort.Slice(memEntries, func(i, j int) bool {
return memEntries[i].UpdatedAt.After(memEntries[j].UpdatedAt)
})
return memEntries
}
@@ -290,7 +298,12 @@ func (c *urlKeywordsCache) ListPage(page, pageSize int) []*urlKeywordsEntry {
}
}
// 分页(从合并数据中按字典序取 page 页
// 按 UpdatedAt 倒序排序(最新在前
sort.Slice(memEntries, func(i, j int) bool {
return memEntries[i].UpdatedAt.After(memEntries[j].UpdatedAt)
})
// 分页
total := len(memEntries)
offset := (page - 1) * pageSize
if offset >= total {