mirror of
https://gitee.com/dromara/mayfly-go
synced 2026-05-18 00:45:37 +08:00
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
|
|
package starter
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"context"
|
|||
|
|
"fmt"
|
|||
|
|
"mayfly-go/pkg/cache"
|
|||
|
|
"mayfly-go/pkg/logx"
|
|||
|
|
"mayfly-go/pkg/rediscli"
|
|||
|
|
|
|||
|
|
"github.com/redis/go-redis/v9"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// 有配置redis信息,则初始化redis。多台机器部署需要使用redis存储验证码、权限、公私钥等信息
|
|||
|
|
func initCache(redisConfig RedisConf) error {
|
|||
|
|
redisCli, err := connRedis(redisConfig)
|
|||
|
|
|
|||
|
|
if redisCli == nil && err == nil {
|
|||
|
|
logx.Info("no redis configuration, using local cache")
|
|||
|
|
return nil
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if err != nil {
|
|||
|
|
return err
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
logx.Info("redis connected successfully, using Redis for caching")
|
|||
|
|
rediscli.SetCli(redisCli)
|
|||
|
|
cache.SetCache(cache.NewRedisCache(redisCli))
|
|||
|
|
return nil
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func connRedis(redisConfig RedisConf) (*redis.Client, error) {
|
|||
|
|
// 设置redis客户端
|
|||
|
|
if redisConfig.Host == "" {
|
|||
|
|
return nil, nil
|
|||
|
|
}
|
|||
|
|
logx.Infof("redis connecting [%s:%d]", redisConfig.Host, redisConfig.Port)
|
|||
|
|
rdb := redis.NewClient(&redis.Options{
|
|||
|
|
Addr: fmt.Sprintf("%s:%d", redisConfig.Host, redisConfig.Port),
|
|||
|
|
Password: redisConfig.Password, // no password set
|
|||
|
|
DB: redisConfig.Db, // use default DB
|
|||
|
|
})
|
|||
|
|
// 测试连接
|
|||
|
|
_, e := rdb.Ping(context.TODO()).Result()
|
|||
|
|
if e != nil {
|
|||
|
|
logx.Errorf("redis connection failed! [%s:%d][%s]", redisConfig.Host, redisConfig.Port, e.Error())
|
|||
|
|
}
|
|||
|
|
return rdb, e
|
|||
|
|
}
|