2019-02-10 09:37:37 +08:00
|
|
|
// Copyright 2019 The Gitea Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a MIT-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package setting
|
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"code.gitea.io/gitea/modules/log"
|
2019-07-17 09:04:37 +08:00
|
|
|
|
|
|
|
_ "github.com/go-macaron/cache/memcache" // memcache plugin for cache
|
|
|
|
_ "github.com/go-macaron/cache/redis"
|
2019-02-10 09:37:37 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
// Cache represents cache settings
|
|
|
|
type Cache struct {
|
|
|
|
Adapter string
|
|
|
|
Interval int
|
|
|
|
Conn string
|
|
|
|
TTL time.Duration
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
// CacheService the global cache
|
|
|
|
CacheService *Cache
|
|
|
|
)
|
|
|
|
|
|
|
|
func newCacheService() {
|
|
|
|
sec := Cfg.Section("cache")
|
|
|
|
CacheService = &Cache{
|
|
|
|
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(), "\" ")
|
|
|
|
default:
|
2019-04-02 15:48:31 +08:00
|
|
|
log.Fatal("Unknown cache adapter: %s", CacheService.Adapter)
|
2019-02-10 09:37:37 +08:00
|
|
|
}
|
|
|
|
CacheService.TTL = sec.Key("ITEM_TTL").MustDuration(16 * time.Hour)
|
|
|
|
|
|
|
|
log.Info("Cache Service Enabled")
|
|
|
|
}
|