整体性能优化

This commit is contained in:
user123456
2025-06-13 11:55:53 +08:00
parent 018a8235e2
commit 8f4fa093c9
6 changed files with 111 additions and 43 deletions

View File

@@ -114,22 +114,29 @@ func (c *Cache) Set(key string, data interface{}) {
c.mu.Lock()
defer c.mu.Unlock()
// 如果缓存已满,删除最旧的条目
if len(c.data) >= c.maxSize {
oldest := time.Now()
var oldestKey string
for k, v := range c.data {
if v.timestamp.Before(oldest) {
oldest = v.timestamp
oldestKey = k
}
// ✅ 先清理过期项,防止内存泄漏
now := time.Now()
for k, v := range c.data {
if now.Sub(v.timestamp) > cacheTTL {
delete(c.data, k)
}
}
// 如果清理后仍然超限,批量删除最旧的条目
if len(c.data) >= c.maxSize {
toDelete := len(c.data) / 4 // 删除25%最旧的
for k := range c.data {
if toDelete <= 0 {
break
}
delete(c.data, k)
toDelete--
}
delete(c.data, oldestKey)
}
c.data[key] = cacheEntry{
data: data,
timestamp: time.Now(),
timestamp: now,
}
}