只实现了单机版连接

This commit is contained in:
Yun
2024-03-13 15:07:00 +08:00
commit c661caf3a7
5 changed files with 117 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
module code.yun.ink/pkg/redisx
go 1.20
require github.com/go-redis/redis/v8 v8.11.5
require (
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
)
+15
View File
@@ -0,0 +1,15 @@
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+35
View File
@@ -0,0 +1,35 @@
package redisx
type redisOption struct {
addr string
password string
db int
poolSize int
}
func defaultOptions() redisOption {
return redisOption{
addr: "localhost:6379",
}
}
type Option func(*redisOption)
// 127.0.0.1:6379
func SetAddress(addr string) Option {
return func(o *redisOption) {
o.addr = addr
}
}
func SetPassword(password string) Option {
return func(o *redisOption) {
o.password = password
}
}
func SetDb(db int) Option {
return func(o *redisOption) {
o.db = db
}
}
+56
View File
@@ -0,0 +1,56 @@
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)
// }
+1
View File
@@ -0,0 +1 @@
package redisx_test