You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.1 KiB

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:
//默认处理
}
}
}
}