29 lines
568 B
Go
29 lines
568 B
Go
package cache
|
|
|
|
import "fmt"
|
|
|
|
var drivers = make(map[string]Driver)
|
|
|
|
func Register(name string, driver Driver) {
|
|
if driver == nil {
|
|
panic("cache: Register driver is nil")
|
|
}
|
|
if _, dup := drivers[name]; dup {
|
|
panic("cache: Register called twice for driver " + name)
|
|
}
|
|
drivers[name] = driver
|
|
}
|
|
|
|
func Open(config *Config) (Cache, error) {
|
|
if config.Driver == "redis" {
|
|
return NewRedis(config)
|
|
}
|
|
|
|
driver, ok := drivers[config.Driver]
|
|
if !ok {
|
|
return nil, fmt.Errorf("unknown driver %q (forgotten import?)", config.Driver)
|
|
}
|
|
|
|
return driver.Cache(config)
|
|
}
|