You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
926 B
55 lines
926 B
/* |
|
* @desc:缓存处理 |
|
* |
|
* |
|
* @Date: 2022/3/9 11:15 |
|
*/ |
|
|
|
package service |
|
|
|
import ( |
|
"github.com/gogf/gf/v2/frame/g" |
|
"github.com/gogf/gf/v2/os/gctx" |
|
"github.com/tiger1103/gfast-cache/cache" |
|
"sync" |
|
"tyj_admin/internal/consts" |
|
) |
|
|
|
type ICache interface { |
|
cache.IGCache |
|
} |
|
|
|
type cacheImpl struct { |
|
*cache.GfCache |
|
prefix string |
|
} |
|
|
|
var ( |
|
c = cacheImpl{} |
|
cacheContainer *cache.GfCache |
|
lock = &sync.Mutex{} |
|
) |
|
|
|
func Cache() ICache { |
|
var ( |
|
ch = c |
|
ctx = gctx.New() |
|
) |
|
prefix := g.Cfg().MustGet(ctx, "system.cache.prefix").String() |
|
model := g.Cfg().MustGet(ctx, "system.cache.model").String() |
|
if cacheContainer == nil { |
|
lock.Lock() |
|
if cacheContainer == nil { |
|
if model == consts.CacheModelRedis { |
|
// redis |
|
cacheContainer = cache.NewRedis(prefix) |
|
} else { |
|
// memory |
|
cacheContainer = cache.New(prefix) |
|
} |
|
} |
|
lock.Unlock() |
|
} |
|
ch.GfCache = cacheContainer |
|
return &ch |
|
}
|
|
|