缓存倒排

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 缓存获取) Title string // 页面标题(从 Redis Snippet 缓存获取)
Snippet string // 摘要(从 Redis Snippet 缓存获取) Snippet string // 摘要(从 Redis Snippet 缓存获取)
Keywords []urlKeywordInfo // 关键词列表 Keywords []urlKeywordInfo // 关键词列表
UpdatedAt time.Time // 最后更新时间(用于倒序排列)
} }
// urlKeywordInfo 单个关键词信息 // urlKeywordInfo 单个关键词信息
@@ -92,10 +93,11 @@ func (c *urlKeywordsCache) Put(url string, title, snippet string, keywords []url
e.Keywords = keywords e.Keywords = keywords
e.Title = title e.Title = title
e.Snippet = snippet e.Snippet = snippet
e.UpdatedAt = time.Now()
entry = e entry = e
} else { } 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) elem := c.order.PushBack(entry)
c.items[url] = elem c.items[url] = elem
@@ -254,6 +256,12 @@ func (c *urlKeywordsCache) ListAll() []*urlKeywordsEntry {
seen[entry.URL] = true seen[entry.URL] = true
} }
} }
// 按 UpdatedAt 倒序排序(最新在前)
sort.Slice(memEntries, func(i, j int) bool {
return memEntries[i].UpdatedAt.After(memEntries[j].UpdatedAt)
})
return memEntries 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) total := len(memEntries)
offset := (page - 1) * pageSize offset := (page - 1) * pageSize
if offset >= total { if offset >= total {