index.go 1.57 KB
package svredis

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

func Init() bool {

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

	// 初始化Redis
	{
		zredis.Init(confRedis.Host+":"+confRedis.Port, confRedis.Pwd, zconvert.ToInt(confRedis.Db))
		if !zredis.Check() {
			return false
		}

		fmt.Println(svconst.AppName + " zredis init success")
	}

	// 初始化redis锁
	{
		zredislock.Init(confRedis.Host+":"+confRedis.Port, confRedis.Pwd, zconvert.ToInt(confRedis.Db))
		fmt.Println(svconst.AppName + " zredislock init success")
	}

	return true
}

func SaveData(gameId string, obj IRedisData) {
	info := obj.RedisInfo(gameId)
	_ = zredis.SetEx(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(info.CacheKey)
	if err != nil {
		has = false
		return
	}
	err = zjson.Obj(text, &obj)
	if err != nil {
		fmt.Println(err)
		has = false
		return
	}
	return
}