Skip to content

Commit

Permalink
refactor: go-redis使用 v8.11.5版本,解决 read block ctx无法cancel问题
Browse files Browse the repository at this point in the history
  • Loading branch information
祝黄清 committed Jun 21, 2023
1 parent da1282e commit 7449036
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 69 deletions.
2 changes: 1 addition & 1 deletion cmd_args.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package redisson

import (
goredis "github.com/redis/go-redis/v9"
goredis "github.com/go-redis/redis/v8"
)

const KeepTTL = goredis.KeepTTL
Expand Down
8 changes: 4 additions & 4 deletions cmd_reply.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"net"
"time"

goredis "github.com/redis/go-redis/v9"
goredis "github.com/go-redis/redis/v8"
"github.com/sandwich-go/rueidis"
"github.com/sandwich-go/rueidis/rueidiscompat"
)
Expand Down Expand Up @@ -364,7 +364,7 @@ type StringStringMapCmd interface {

func newStringStringMapCmd(res rueidis.RedisResult, args ...interface{}) StringStringMapCmd {
val, err := res.AsStrMap()
cmd := goredis.NewMapStringStringCmd(context.Background(), args...)
cmd := goredis.NewStringStringMapCmd(context.Background(), args...)
cmd.SetErr(wrapError(err))
cmd.SetVal(val)
return cmd
Expand All @@ -378,7 +378,7 @@ type StringIntMapCmd interface {

func newStringIntMapCmd(res rueidis.RedisResult, args ...interface{}) StringIntMapCmd {
val, err := res.AsIntMap()
cmd := goredis.NewMapStringIntCmd(context.Background(), args...)
cmd := goredis.NewStringIntMapCmd(context.Background(), args...)
cmd.SetErr(wrapError(err))
cmd.SetVal(val)
return cmd
Expand Down Expand Up @@ -707,7 +707,7 @@ func newXInfoConsumersCmd(res rueidis.RedisResult, stream string, group string)
}
if attr, ok := info["idle"]; ok {
idle, _ := attr.AsInt64()
consumer.Idle = time.Duration(idle) * time.Millisecond
consumer.Idle = idle
}
val = append(val, consumer)
}
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ go 1.18

require (
github.com/coreos/go-semver v0.3.0
github.com/go-redis/redis/v8 v8.11.5
github.com/prometheus/client_golang v1.11.0
github.com/redis/go-redis/v9 v9.0.3
github.com/sandwich-go/rueidis v0.1.12
github.com/smartystreets/goconvey v1.7.2
)
Expand Down
10 changes: 6 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bsm/ginkgo/v2 v2.7.0 h1:ItPMPH90RbmZJt5GtkcNvIRuGEdwlBItdNVoyzaNQao=
github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
Expand All @@ -19,12 +17,15 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
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/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
Expand Down Expand Up @@ -70,6 +71,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY=
github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
Expand All @@ -94,8 +97,6 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4=
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/redis/go-redis/v9 v9.0.3 h1:+7mmR26M0IvyLxGZUHxu4GiBkJkVDid0Un+j4ScYu4k=
github.com/redis/go-redis/v9 v9.0.3/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk=
github.com/sandwich-go/rueidis v0.1.12 h1:8ZksyYJPESep8YlBnz5woRxF+Tj84wVdsCttp9eFVnc=
github.com/sandwich-go/rueidis v0.1.12/go.mod h1:IsXMwxHDgHbixhfVR36KBE/8TdCcR07Igenwb5AnHIA=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
Expand Down Expand Up @@ -162,6 +163,7 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Expand Down
2 changes: 1 addition & 1 deletion option.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import "time"
//go:generate optiongen --new_func=NewConf --xconf=true --empty_composite_nil=true --usage_tag_name=usage
func ConfOptionDeclareWithDefault() interface{} {
return map[string]interface{}{
"Resp": RESP(RESP2), // @MethodComment(RESP版本)
"Resp": RESP(RESP3), // @MethodComment(RESP版本)
"Name": "", // @MethodComment(Redis客户端名字)
"MasterName": "", // @MethodComment(Redis Sentinel模式下,master名字)
"EnableMonitor": true, // @MethodComment(是否开启监控)
Expand Down
2 changes: 1 addition & 1 deletion redis_resp.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"time"

"github.com/coreos/go-semver/semver"
goredis "github.com/redis/go-redis/v9"
goredis "github.com/go-redis/redis/v8"
)

type RESP = string
Expand Down
85 changes: 28 additions & 57 deletions redis_resp2.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@ package redisson

import (
"context"
"fmt"
"sync"
"time"

goredis "github.com/redis/go-redis/v9"
goredis "github.com/go-redis/redis/v8"
)

type resp2 struct {
Expand All @@ -16,18 +15,18 @@ type resp2 struct {

func connectResp2(v ConfVisitor, h handler) (*resp2, error) {
var opts = &goredis.UniversalOptions{
Addrs: v.GetAddrs(),
DB: v.GetDB(),
Username: v.GetUsername(),
Password: v.GetPassword(),
ReadTimeout: v.GetReadTimeout(),
WriteTimeout: v.GetWriteTimeout(),
PoolSize: v.GetConnPoolSize(),
MinIdleConns: v.GetMinIdleConns(),
ConnMaxLifetime: v.GetConnMaxAge(),
ConnMaxIdleTime: v.GetIdleConnTimeout(),
PoolTimeout: v.GetConnPoolTimeout(),
MasterName: v.GetMasterName(),
Addrs: v.GetAddrs(),
DB: v.GetDB(),
Username: v.GetUsername(),
Password: v.GetPassword(),
ReadTimeout: v.GetReadTimeout(),
WriteTimeout: v.GetWriteTimeout(),
PoolSize: v.GetConnPoolSize(),
MinIdleConns: v.GetMinIdleConns(),
MaxConnAge: v.GetConnMaxAge(),
IdleTimeout: v.GetIdleConnTimeout(),
PoolTimeout: v.GetConnPoolTimeout(),
MasterName: v.GetMasterName(),
}
var cmd goredis.UniversalClient
if v.GetCluster() {
Expand Down Expand Up @@ -421,17 +420,7 @@ func (r *resp2) HMSet(ctx context.Context, key string, values ...interface{}) Bo
}

func (r *resp2) HRandField(ctx context.Context, key string, count int, withValues bool) StringSliceCmd {
if !withValues {
return r.cmd.HRandField(ctx, key, count)
}
// TODO fix goredis
result := r.cmd.HRandFieldWithValues(ctx, key, count)
var val []string
for _, v := range result.Val() {
val = append(val, v.Key)
val = append(val, v.Value)
}
return goredis.NewStringSliceResult(val, result.Err())
return r.cmd.HRandField(ctx, key, count, withValues)
}

func (r *resp2) HScan(ctx context.Context, key string, cursor uint64, match string, count int64) ScanCmd {
Expand Down Expand Up @@ -734,14 +723,7 @@ func (r *resp2) Command(ctx context.Context) CommandsInfoCmd {
}

func (r *resp2) ConfigGet(ctx context.Context, parameter string) SliceCmd {
// TODO: fix goredis
result := r.cmd.ConfigGet(ctx, parameter)
var val []interface{}
for k, v := range result.Val() {
val = append(val, k)
val = append(val, v)
}
return goredis.NewSliceResult(val, result.Err())
return r.cmd.ConfigGet(ctx, parameter)
}

func (r *resp2) ConfigResetStat(ctx context.Context) StatusCmd {
Expand Down Expand Up @@ -909,27 +891,27 @@ func (r *resp2) toZs(members ...Z) []*Z {
}

func (r *resp2) ZAdd(ctx context.Context, key string, members ...Z) IntCmd {
return r.cmd.ZAdd(ctx, key, members...)
return r.cmd.ZAdd(ctx, key, r.toZs(members...)...)
}

func (r *resp2) ZAddNX(ctx context.Context, key string, members ...Z) IntCmd {
return r.cmd.ZAddNX(ctx, key, members...)
return r.cmd.ZAddNX(ctx, key, r.toZs(members...)...)
}

func (r *resp2) ZAddXX(ctx context.Context, key string, members ...Z) IntCmd {
return r.cmd.ZAddXX(ctx, key, members...)
return r.cmd.ZAddXX(ctx, key, r.toZs(members...)...)
}

func (r *resp2) ZAddCh(ctx context.Context, key string, members ...Z) IntCmd {
return r.cmd.ZAddArgs(ctx, key, goredis.ZAddArgs{Ch: true, Members: members})
return r.cmd.ZAddCh(ctx, key, r.toZs(members...)...)
}

func (r *resp2) ZAddNXCh(ctx context.Context, key string, members ...Z) IntCmd {
return r.cmd.ZAddArgs(ctx, key, goredis.ZAddArgs{NX: true, Ch: true, Members: members})
return r.cmd.ZAddNXCh(ctx, key, r.toZs(members...)...)
}

func (r *resp2) ZAddXXCh(ctx context.Context, key string, members ...Z) IntCmd {
return r.cmd.ZAddArgs(ctx, key, goredis.ZAddArgs{XX: true, Ch: true, Members: members})
return r.cmd.ZAddXXCh(ctx, key, r.toZs(members...)...)
}

func (r *resp2) ZAddArgs(ctx context.Context, key string, args ZAddArgs) IntCmd {
Expand Down Expand Up @@ -961,15 +943,15 @@ func (r *resp2) ZDiffStore(ctx context.Context, destination string, keys ...stri
}

func (r *resp2) ZIncr(ctx context.Context, key string, member Z) FloatCmd {
return r.cmd.ZAddArgsIncr(ctx, key, goredis.ZAddArgs{Members: []Z{member}})
return r.cmd.ZIncr(ctx, key, &member)
}

func (r *resp2) ZIncrNX(ctx context.Context, key string, member Z) FloatCmd {
return r.cmd.ZAddArgsIncr(ctx, key, goredis.ZAddArgs{Members: []Z{member}, NX: true})
return r.cmd.ZIncrNX(ctx, key, &member)
}

func (r *resp2) ZIncrXX(ctx context.Context, key string, member Z) FloatCmd {
return r.cmd.ZAddArgsIncr(ctx, key, goredis.ZAddArgs{Members: []Z{member}, XX: true})
return r.cmd.ZIncrXX(ctx, key, &member)
}

func (r *resp2) ZIncrBy(ctx context.Context, key string, increment float64, member string) FloatCmd {
Expand Down Expand Up @@ -1005,17 +987,7 @@ func (r *resp2) ZPopMin(ctx context.Context, key string, count ...int64) ZSliceC
}

func (r *resp2) ZRandMember(ctx context.Context, key string, count int, withScores bool) StringSliceCmd {
if !withScores {
return r.cmd.ZRandMember(ctx, key, count)
}
// TODO fix goredis
result := r.cmd.ZRandMemberWithScores(ctx, key, count)
var val []string
for _, v := range result.Val() {
val = append(val, fmt.Sprintf("%v", v.Member))
val = append(val, fmt.Sprintf("%v", v.Score))
}
return goredis.NewStringSliceResult(val, result.Err())
return r.cmd.ZRandMember(ctx, key, count, withScores)
}

func (r *resp2) ZRange(ctx context.Context, key string, start, stop int64) StringSliceCmd {
Expand Down Expand Up @@ -1223,12 +1195,11 @@ func (r *resp2) XRevRangeN(ctx context.Context, stream string, start, stop strin
}

func (r *resp2) XTrim(ctx context.Context, key string, maxLen int64) IntCmd {
return r.cmd.XTrimMaxLen(ctx, key, maxLen)
return r.cmd.XTrim(ctx, key, maxLen)
}

func (r *resp2) XTrimApprox(ctx context.Context, key string, maxLen int64) IntCmd {
// TODO use limit
return r.cmd.XTrimMaxLenApprox(ctx, key, maxLen, 0)
return r.cmd.XTrimApprox(ctx, key, maxLen)
}

func (r *resp2) XTrimMaxLen(ctx context.Context, key string, maxLen int64) IntCmd {
Expand Down Expand Up @@ -1308,7 +1279,7 @@ func (r *resp2) Set(ctx context.Context, key string, value interface{}, expirati
}

func (r *resp2) SetEX(ctx context.Context, key string, value interface{}, expiration time.Duration) StatusCmd {
return r.cmd.SetEx(ctx, key, value, expiration)
return r.cmd.SetEX(ctx, key, value, expiration)
}

func (r *resp2) SetNX(ctx context.Context, key string, value interface{}, expiration time.Duration) BoolCmd {
Expand Down

0 comments on commit 7449036

Please sign in to comment.