优化redis的使用

This commit is contained in:
Yun
2024-05-23 23:24:18 +08:00
parent 4d769cf997
commit c9a77c6f38
3 changed files with 11 additions and 12 deletions
+8 -8
View File
@@ -28,7 +28,7 @@ var clusterWorkerList sync.Map
type Cluster struct {
ctx context.Context
redis *redis.Client
redis redis.UniversalClient
cache *cachex.Cache
logger Logger
keyPrefix string // key前缀
@@ -43,7 +43,7 @@ var clu *Cluster = nil
// 初始化定时器
// 全局只需要初始化一次
func InitCluster(ctx context.Context, red *redis.Client, keyPrefix string, opts ...Option) *Cluster {
func InitCluster(ctx context.Context, red redis.UniversalClient, keyPrefix string, opts ...Option) *Cluster {
clusterOnceLimit.Do(func() {
op := newOptions(opts...)
@@ -65,7 +65,7 @@ func InitCluster(ctx context.Context, red *redis.Client, keyPrefix string, opts
timer := time.NewTicker(time.Millisecond * 200)
go func(ctx context.Context, red *redis.Client) {
go func(ctx context.Context) {
Loop:
for {
select {
@@ -76,7 +76,7 @@ func InitCluster(ctx context.Context, red *redis.Client, keyPrefix string, opts
break Loop
}
}
}(ctx, red)
}(ctx)
})
return clu
}
@@ -341,7 +341,7 @@ func (c *Cluster) watch() {
c.redis.SAdd(c.ctx, c.setKey, keys[1])
continue
}
go c.doTask(c.ctx, c.redis, keys[1])
go c.doTask(c.ctx, keys[1])
}
}()
@@ -364,14 +364,14 @@ func (c *Cluster) watch() {
c.redis.SAdd(c.ctx, c.setKey, taskId)
continue
}
go c.doTask(c.ctx, c.redis, taskId)
go c.doTask(c.ctx, taskId)
}
}()
}
// 执行任务
func (c *Cluster) doTask(ctx context.Context, red *redis.Client, taskId string) {
func (c *Cluster) doTask(ctx context.Context, taskId string) {
defer func() {
if err := recover(); err != nil {
@@ -387,7 +387,7 @@ func (c *Cluster) doTask(ctx context.Context, red *redis.Client, taskId string)
t := val.(timerStr)
// 这里加一个全局锁
lock := lockx.NewGlobalLock(ctx, red, taskId)
lock := lockx.NewGlobalLock(ctx, c.redis, taskId)
tB := lock.Lock()
if !tB {
c.logger.Errorf(ctx, "doTask timer:获取锁失败:%s", taskId)
+1 -1
View File
@@ -5,7 +5,7 @@ go 1.19
require (
github.com/go-redis/redis/v8 v8.11.5
github.com/yuninks/cachex v1.0.5
github.com/yuninks/lockx v1.0.1
github.com/yuninks/lockx v1.0.2
)
require (
+2 -3
View File
@@ -1,4 +1,3 @@
code.yun.ink/open/timer v1.0.1 h1:ZWecU5K0rFB15p8DZubozTEwo1vrO4mUCRwEoD1tbEQ=
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=
@@ -11,8 +10,8 @@ github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
github.com/yuninks/cachex v1.0.5 h1:Y2NmTsuEgwEVYb7FVFh5tUN67kmrUioeksQqLbOAwsM=
github.com/yuninks/cachex v1.0.5/go.mod h1:5357qz18UvHTJSgZzkMamUzZoFzGeKG9+4tIUBXRSVM=
github.com/yuninks/lockx v1.0.1 h1:rBUCFZIR6ABR6QLZFp27O9jpGv/TKjmjCKkk1H2lBjI=
github.com/yuninks/lockx v1.0.1/go.mod h1:AHTVVhM7nZ/p+LVmLQbLneOjM9cn/C5zZ+EpXPi0MMs=
github.com/yuninks/lockx v1.0.2 h1:p0n791WmsU8D7YF2tQaNLwPE75jdd774unlJZRTNfaw=
github.com/yuninks/lockx v1.0.2/go.mod h1:J6wvuUELLcMn6FCmiZFt7K5w1QQAh1myL7h3JrZaQiQ=
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=