Files
2021-09-23 10:46:41 +08:00

61 lines
1.3 KiB
Go

/*
* @desc:缓存处理
* @company:云南省奇讯科技有限公司
* @Author: yixiaohu
* @Date: 2021/9/13 14:33
*/
package api
import (
"gfast/app/common/api"
"gfast/app/common/global"
commService "gfast/app/common/service"
"github.com/gogf/gf/encoding/gbase64"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/util/gconv"
)
type cache struct {
api.CommonBase
}
var Cache = new(cache)
// Clear 清除缓存
func (c *cache) Clear(r *ghttp.Request) {
cs := commService.Cache.New()
cs.RemoveByTag(global.SysAuthTag)
cs.RemoveByTag(global.SysDictTag)
cs.RemoveByTag(global.SysConfigTag)
cacheRedis := g.Cfg().GetBool("redis.open")
if cacheRedis {
cursor := 0
for {
v, err := g.Redis().DoVar("scan", cursor, "match", global.CachePrefix+"*", "count", "100")
if err != nil {
c.FailJsonExit(r, err.Error())
}
data := gconv.SliceAny(v)
var dataSlice []string
err = gconv.Structs(data[1], &dataSlice)
if err != nil {
c.FailJsonExit(r, err.Error())
}
for _, d := range dataSlice {
dk := gbase64.MustDecodeToString(d)
_, err = g.Redis().DoVar("del", dk)
if err != nil {
c.FailJsonExit(r, err.Error())
}
}
cursor = gconv.Int(data[0])
if cursor == 0 {
break
}
}
}
c.SusJsonExit(r, "缓存清除成功")
}