57 lines
1.7 KiB
Go
57 lines
1.7 KiB
Go
package redisx
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/go-redis/redis/v8"
|
|
)
|
|
|
|
// PoolSize:连接池中的最大连接数。
|
|
// MinIdleConns:连接池中的最少空闲连接数。
|
|
// MaxConnAge:连接池中连接的最长寿命。
|
|
// PoolTimeout:当所有连接都被使用时,客户端等待一个连接被释放到连接池的最长时间。
|
|
// IdleTimeout:在连接池中保持空闲状态的最长时间,超过这个时间的空闲连接将被关闭。
|
|
// IdleCheckFrequency:检查空闲连接的频率。
|
|
|
|
// 单机
|
|
func NewRedis(opts ...Option) redis.UniversalClient {
|
|
opt := defaultOptions()
|
|
for _, apply := range opts {
|
|
apply(&opt)
|
|
}
|
|
|
|
client := redis.NewClient(&redis.Options{
|
|
Addr: opt.addr,
|
|
Password: opt.password, // no password set
|
|
DB: opt.db, // use default DB
|
|
|
|
// 连接池配置参数
|
|
// PoolSize: 100, // 连接池最大连接数
|
|
// MinIdleConns: 10, // 最小空闲连接数
|
|
// MaxConnAge: 30 * time.Minute, // 连接最大寿命
|
|
// PoolTimeout: 4 * time.Second, // 等待连接池连接的最长时间
|
|
// IdleTimeout: 5 * time.Minute, // 空闲连接的生命周期
|
|
// IdleCheckFrequency: 60 * time.Second, // 空闲连接检查频率
|
|
})
|
|
_, err := client.Ping(context.Background()).Result()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return client
|
|
}
|
|
|
|
// 集群
|
|
|
|
// 哨兵
|
|
// client = redis.NewFailoverClient(&redis.FailoverOptions{
|
|
// MasterName: "mymaster",
|
|
// SentinelAddrs: []string{"127.0.0.1:26379", "127.0.0.1:26380"},
|
|
// Password: "",
|
|
// DB: 0,
|
|
// })
|
|
// for {
|
|
// reply, err := client.Incr("pvcont").Result()
|
|
// fmt.Printf("reply=%v err=%v\n", reply, err)
|
|
// time.Sleep(1 * time.Second)
|
|
// }
|