package database import ( "context" "time" "github.com/go-kratos/kratos/v2/log" "github.com/redis/go-redis/v9" ) func NewRedis(source string, db int) *redis.Client { opt, err := redis.ParseURL(source) if err != nil { panic(err) } opt.DB = db opt.PoolSize = 10 opt.MinIdleConns = 5 opt.MaxRetries = 3 opt.DialTimeout = 5 * time.Second opt.ReadTimeout = 3 * time.Second opt.WriteTimeout = 3 * time.Second opt.PoolTimeout = 4 * time.Second client := redis.NewClient(opt) timeout, cancelFunc := context.WithTimeout(context.Background(), time.Second*2) defer cancelFunc() if err := client.Ping(timeout).Err(); err != nil { log.Fatalf("redis connect error: %v", err) } return client }