v1.0.0
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package global
|
||||
|
||||
import (
|
||||
"sun-panel/lib/cache"
|
||||
"sun-panel/structs"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 缓存驱动
|
||||
const (
|
||||
CACHE_DRIVE_REDIS = "redis"
|
||||
CACHE_DRIVE_MEMORY = "memory"
|
||||
)
|
||||
|
||||
// 创建一个缓存区
|
||||
// | defaultExpiration:默认过期时长
|
||||
// | cleanupInterval:清理过期的key间隔 0.不清理
|
||||
// | name:缓存名称
|
||||
func NewCache[T any](defaultExpiration time.Duration, cleanupInterval time.Duration, name string) cache.Cacher[T] {
|
||||
drive := Config.GetValueString("base", "cache_drive")
|
||||
if drive == "" {
|
||||
drive = CACHE_DRIVE_MEMORY
|
||||
}
|
||||
var cacher cache.Cacher[T]
|
||||
Logger.Debugln("缓存驱动:", drive)
|
||||
switch drive {
|
||||
case CACHE_DRIVE_MEMORY:
|
||||
cacher = cache.NewGoCache[T](defaultExpiration, cleanupInterval)
|
||||
case CACHE_DRIVE_REDIS:
|
||||
redisConfig := structs.IniConfigRedis{}
|
||||
if err := Config.GetSection("redis", &redisConfig); err != nil {
|
||||
redisConfig.Prefix = ""
|
||||
}
|
||||
cacher = cache.NewRedisCache[T](RedisDb, redisConfig.Prefix+name, defaultExpiration, cleanupInterval)
|
||||
}
|
||||
|
||||
return cacher
|
||||
}
|
||||
Reference in New Issue
Block a user