index.go 1.75 KB
package svredis

import (
	"apigame/service-common/svconst"
	"apigame/util/util-lx/lxredis"
	"apigame/util/utstring"
	"apigame/util/zjson"
	"apigame/util/zredis"
	"fmt"
	"github.com/astaxie/beego"
	"github.com/mitchellh/mapstructure"
)

type RedisConfig struct {
	Host   string `json:"host"`
	Port   string `json:"port"`
	Pwd    string `json:"pwd"`
	Db     string `json:"Db"`
	Prefix string `json:"prefix"`
}

func Init() bool {

	{
		//初始化Redis
		redisconfig, _ := beego.AppConfig.GetSection("redis")
		var mredisconfig lxredis.MapRedisConfig
		err := mapstructure.Decode(redisconfig, &mredisconfig)
		if err != nil {
			fmt.Println(" mapstructure.Decode Error::" + err.Error())
		} else {
			err = lxredis.InitRedis(mredisconfig)
			if err != nil {
				fmt.Println("  lxredis.InitRedis Error::" + err.Error())
				return false
			}
		}
		fmt.Println(svconst.AppName + " redis init success")
	}

	//初始化Redis
	confText, _ := beego.AppConfig.GetSection("redis")
	var conf RedisConfig
	err := mapstructure.Decode(confText, &conf)
	if err != nil {
		fmt.Println("svredis.Init mapstructure.Decode Error::" + err.Error())
	}
	zredis.Init(conf.Host+":"+conf.Port, conf.Pwd, utstring.StringToInt(conf.Db))
	if !zredis.Check() {
		return false
	}

	fmt.Println(svconst.AppName + " redis init success")
	return true
}

func SaveData(gameId string, obj IRedisData) {
	info := obj.RedisInfo(gameId)
	_ = zredis.SetEx(zredis.GetConn(), info.CacheKey, zjson.Str(obj), info.CacheTime)
}

func LoadData[T IRedisData](gameId string, obj T) (has bool) {
	has = true
	info := obj.RedisInfo(gameId)
	text, err := zredis.Get(zredis.GetConn(), info.CacheKey)
	if err != nil {
		has = false
		return
	}
	err = zjson.Obj(text, &obj)
	if err != nil {
		fmt.Println(err)
		has = false
		return
	}
	return
}