package redishandler import ( "HttpServer/conf" "common/logger" "common/redis" "encoding/json" "errors" "strconv" ) const USER_TOKEN_KEY = "login_token" var gRedis *redis.RedisClient = nil func GetRedisClient() *redis.RedisClient { return gRedis } type TestInfo struct { Gold int64 //金币 Head string //头像地址 NickName string //昵称 Highestlv int //当前最高猫等级 Uuid int //uuid } type Mytest struct { Test1 int M_userInfo map[int]int } func TestMyredis() { //testmap var test Mytest test.Test1 = 1 test.M_userInfo = make(map[int]int) test.M_userInfo[1] = 1 test.M_userInfo[1] = 2 test.M_userInfo[2] = 2 ddt, _ := json.Marshal(&test) gRedis.SetString("testddt", string(ddt)) logger.Info("testddt test=%v.ddt=%v", test, string(ddt)) rest, err := gRedis.GetString("testddt") if err != nil { logger.Error("TestMyredis ddtfailed err=%v", err) } else { var restest Mytest err = json.Unmarshal([]byte(rest), &restest) logger.Info("testddt rest=%v,restest=%v", rest, restest) } //gRedis.HSet("luheng", "luhengsb", "22") //gRedis.HSet("luheng", "luhengbb", "33") var rinfo TestInfo rinfo.Gold = 100 rinfo.Highestlv = 99 rinfo.Head = "sb" rinfo.NickName = "sd" rinfo.Uuid = 1004 rinfostr, _ := json.Marshal(&rinfo) err = gRedis.Zadd("luhengtest", float64(rinfo.Gold), string(rinfostr)) if err != nil { logger.Info("TestMyredis failed err=%v", err) } else { logger.Info("TestMyredis success rinfostr=%v", string(rinfostr)) } rinfo.Gold = 1000 rinfo.Highestlv = 99 rinfo.Head = "sb1" rinfo.NickName = "sd1" rinfo.Uuid = 1005 rinfostr, _ = json.Marshal(&rinfo) err = gRedis.Zadd("luhengtest", float64(rinfo.Gold), string(rinfostr)) rinfo.Gold = 10000 rinfo.Highestlv = 99 rinfo.Head = "sb2" rinfo.NickName = "sd2" rinfo.Uuid = 1006 rinfostr, _ = json.Marshal(&rinfo) err = gRedis.Zadd("luhengtest", float64(rinfo.Gold), string(rinfostr)) vv, err := gRedis.ZRevRangewithIndex("luhengtest", 0, -1) if err == nil { for k, v := range vv { rinfobyte, _ := v.([]byte) var rinfo TestInfo //logger.Info("TestMyredis ori=%v", string(v.([]byte))) err := json.Unmarshal(rinfobyte, &rinfo) if err == nil { logger.Info("TestMyredis k=%v,v=%v", k, rinfo) } else { logger.Info("TestMyredis isbigsb err=%v", err) } } } else { logger.Info("test is err=%v", err) } } func Init() error { redis_cfg := conf.GetRedisConf() if gRedis = redis.NewRedisClient(redis_cfg.Host, redis_cfg.Password, redis_cfg.Db); gRedis == nil { return errors.New("initRedis error") } logger.Info("init redis success!") TestMyredis() return nil } /* 加载token */ func LoadPlayerTokenFromRedis(uid int) (string, error) { token, err := gRedis.HGet(USER_TOKEN_KEY, strconv.Itoa(uid)) if err != nil { logger.Notic("LoadPlayerTokenFromRedis failed uid:%v err%v", uid, err) return "", err } return token, err }