Files
Atlas/internal/store/cache.go
T
renjue 77f9998393
CI / docker (push) Successful in 3m13s
实现 Atlas AI 平台一期能力并完成品牌化改造。
引入用户端对话/生图与管理端 Provider 配置,统一 invoke 编排、Gateway、请求日志与模型管理;前端按设计规范拆分布局,Go module 更名为 github.com/rose_cat707/Atlas;生图长任务 SSE 推送;管理端登录防爆破;协议与服务类型联动;Replicate 模型同步修复;用户端创作台 UI 重构;管理端创作历史替代请求日志。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 22:50:58 +08:00

47 lines
801 B
Go

package store
import (
"sync"
"time"
)
type HotCache struct {
mu sync.RWMutex
entries map[string]cacheEntry
ttl time.Duration
}
type cacheEntry struct {
value any
expiresAt time.Time
}
func NewHotCache(ttl time.Duration) *HotCache {
return &HotCache{
entries: make(map[string]cacheEntry),
ttl: ttl,
}
}
func (c *HotCache) Get(key string) (any, bool) {
c.mu.RLock()
defer c.mu.RUnlock()
e, ok := c.entries[key]
if !ok || time.Now().After(e.expiresAt) {
return nil, false
}
return e.value, true
}
func (c *HotCache) Set(key string, value any) {
c.mu.Lock()
defer c.mu.Unlock()
c.entries[key] = cacheEntry{value: value, expiresAt: time.Now().Add(c.ttl)}
}
func (c *HotCache) Delete(key string) {
c.mu.Lock()
defer c.mu.Unlock()
delete(c.entries, key)
}