1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
// Copyright (c) 2012-2016 The Revel Framework Authors, All rights reserved.
// Revel Framework source code and usage is governed by a MIT style
// license that can be found in the LICENSE file.
package cache
import (
"strings"
"time"
"github.com/revel/revel"
)
var cacheLog = revel.RevelLog.New("section", "cache")
func init() {
revel.OnAppStart(func() {
// Set the default expiration time.
defaultExpiration := time.Hour // The default for the default is one hour.
if expireStr, found := revel.Config.String("cache.expires"); found {
var err error
if defaultExpiration, err = time.ParseDuration(expireStr); err != nil {
cacheLog.Panic("Could not parse default cache expiration duration " + expireStr + ": " + err.Error())
}
}
// make sure you aren't trying to use both memcached and redis
if revel.Config.BoolDefault("cache.memcached", false) && revel.Config.BoolDefault("cache.redis", false) {
cacheLog.Panic("You've configured both memcached and redis, please only include configuration for one cache!")
}
// Use memcached?
if revel.Config.BoolDefault("cache.memcached", false) {
hosts := strings.Split(revel.Config.StringDefault("cache.hosts", ""), ",")
if len(hosts) == 0 {
cacheLog.Panic("Memcache enabled but no memcached hosts specified!")
}
Instance = NewMemcachedCache(hosts, defaultExpiration)
return
}
// Use Redis (share same config as memcached)?
if revel.Config.BoolDefault("cache.redis", false) {
hosts := strings.Split(revel.Config.StringDefault("cache.hosts", ""), ",")
if len(hosts) == 0 {
cacheLog.Panic("Redis enabled but no Redis hosts specified!")
}
if len(hosts) > 1 {
cacheLog.Panic("Redis currently only supports one host!")
}
password := revel.Config.StringDefault("cache.redis.password", "")
Instance = NewRedisCache(hosts[0], password, defaultExpiration)
return
}
// By default, use the in-memory cache.
Instance = NewInMemoryCache(defaultExpiration)
})
}
|