Files
Message-Push-Nest/service/settings_service/cache.go
T

75 lines
1.7 KiB
Go
Raw Normal View History

2025-09-20 16:26:18 +08:00
package settings_service
import (
"sync"
"time"
)
// SiteConfigCache 站点配置缓存
type SiteConfigCache struct {
data map[string]string
lastUpdate time.Time
mutex sync.RWMutex
}
var siteConfigCache = &SiteConfigCache{
data: make(map[string]string),
}
// GetSiteConfigCache 获取站点配置缓存
func GetSiteConfigCache() map[string]string {
siteConfigCache.mutex.RLock()
defer siteConfigCache.mutex.RUnlock()
// 返回缓存的副本,避免外部修改
result := make(map[string]string)
for k, v := range siteConfigCache.data {
result[k] = v
}
return result
}
// SetSiteConfigCache 设置站点配置缓存
func SetSiteConfigCache(data map[string]string) {
siteConfigCache.mutex.Lock()
defer siteConfigCache.mutex.Unlock()
// 清空现有缓存
siteConfigCache.data = make(map[string]string)
// 设置新数据
for k, v := range data {
siteConfigCache.data[k] = v
}
// 更新缓存时间
siteConfigCache.lastUpdate = time.Now()
}
// ClearSiteConfigCache 清除站点配置缓存
func ClearSiteConfigCache() {
siteConfigCache.mutex.Lock()
defer siteConfigCache.mutex.Unlock()
siteConfigCache.data = make(map[string]string)
siteConfigCache.lastUpdate = time.Time{}
}
// IsSiteConfigCacheValid 检查缓存是否有效(可选:可以设置缓存过期时间)
func IsSiteConfigCacheValid() bool {
siteConfigCache.mutex.RLock()
defer siteConfigCache.mutex.RUnlock()
// 如果缓存为空,认为无效
if len(siteConfigCache.data) == 0 {
return false
}
// 可以在这里添加缓存过期逻辑,比如缓存5分钟后过期
// if time.Since(siteConfigCache.lastUpdate) > 5*time.Minute {
// return false
// }
return true
}