package redisx import ( "context" "github.com/go-redis/redis/v8" ) // PoolSize:连接池中的最大连接数。 // MinIdleConns:连接池中的最少空闲连接数。 // MaxConnAge:连接池中连接的最长寿命。 // PoolTimeout:当所有连接都被使用时,客户端等待一个连接被释放到连接池的最长时间。 // IdleTimeout:在连接池中保持空闲状态的最长时间,超过这个时间的空闲连接将被关闭。 // IdleCheckFrequency:检查空闲连接的频率。 // 单机 func NewRedis(opts ...Option) *redis.Client { 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) // }