34 lines
709 B
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
|
|
}
|