diff options
Diffstat (limited to 'modules/setting')
-rw-r--r-- | modules/setting/cache.go | 54 |
1 files changed, 47 insertions, 7 deletions
diff --git a/modules/setting/cache.go b/modules/setting/cache.go index babb62baea..34a212db18 100644 --- a/modules/setting/cache.go +++ b/modules/setting/cache.go @@ -13,31 +13,71 @@ import ( // Cache represents cache settings type Cache struct { + Enabled bool Adapter string Interval int Conn string - TTL time.Duration + TTL time.Duration `ini:"ITEM_TTL"` } var ( // CacheService the global cache - CacheService *Cache + CacheService = struct { + Cache + + LastCommit struct { + Enabled bool + TTL time.Duration `ini:"ITEM_TTL"` + CommitsCount int64 + } `ini:"cache.last_commit"` + }{ + Cache: Cache{ + Enabled: true, + Adapter: "memory", + Interval: 60, + TTL: 16 * time.Hour, + }, + LastCommit: struct { + Enabled bool + TTL time.Duration `ini:"ITEM_TTL"` + CommitsCount int64 + }{ + Enabled: true, + TTL: 8760 * time.Hour, + CommitsCount: 1000, + }, + } ) func newCacheService() { sec := Cfg.Section("cache") - CacheService = &Cache{ - Adapter: sec.Key("ADAPTER").In("memory", []string{"memory", "redis", "memcache"}), + if err := sec.MapTo(&CacheService); err != nil { + log.Fatal("Failed to map Cache settings: %v", err) } + + CacheService.Adapter = sec.Key("ADAPTER").In("memory", []string{"memory", "redis", "memcache"}) switch CacheService.Adapter { case "memory": - CacheService.Interval = sec.Key("INTERVAL").MustInt(60) case "redis", "memcache": CacheService.Conn = strings.Trim(sec.Key("HOST").String(), "\" ") + case "": // disable cache + CacheService.Enabled = false default: log.Fatal("Unknown cache adapter: %s", CacheService.Adapter) } - CacheService.TTL = sec.Key("ITEM_TTL").MustDuration(16 * time.Hour) - log.Info("Cache Service Enabled") + if CacheService.Enabled { + log.Info("Cache Service Enabled") + } + + sec = Cfg.Section("cache.last_commit") + if !CacheService.Enabled { + CacheService.LastCommit.Enabled = false + } + + CacheService.LastCommit.CommitsCount = sec.Key("COMMITS_COUNT").MustInt64(1000) + + if CacheService.LastCommit.Enabled { + log.Info("Last Commit Cache Service Enabled") + } } |