package initialize import ( "github.com/go-redis/redis" "go.uber.org/zap" "pure/global" "strconv" "strings" ) func Redis() { redisCfg := global.MG_CONFIG.Redis client := redis.NewClient(&redis.Options{ Addr: redisCfg.Addr, Password: redisCfg.Password, // no password set DB: redisCfg.DB, // use default DB }) pong, err := client.Ping().Result() if err != nil { global.MG_LOG.Error("redis connect ping failed, err:", zap.Any("err", err)) } else { global.MG_LOG.Info("redis connect ping response:", zap.String("pong", pong)) global.MG_REDIS = client } //开启过期消息订阅 go PubsunChannel(client) } func PubsunChannel(client *redis.Client) { pubsub := client.Subscribe("__keyevent@" + strconv.Itoa(global.MG_CONFIG.Redis.DB) + "__:expired") //fmt.Println("__keyevent@" + strconv.Itoa(global.MG_CONFIG.Redis.DB) + "__:expired") defer pubsub.Close() for msg := range pubsub.Channel() { key := strings.Split(msg.Payload, "-") if len(key) > 1 { switch key[0] { case "test": println(msg.Payload) default: //默认处理 } } } }