go-kratos/pkg/database/redis.go

34 lines
709 B
Go

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
}