Skip to content

Commit a01799f

Browse files
committed
Add FailoverClusterClient support + fix example/hset-struct go.sum
1 parent a402c55 commit a01799f

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

Diff for: example/hset-struct/go.sum

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
22
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
3-
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
4-
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
53
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
64
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
75
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=

Diff for: universal.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ func (o *UniversalOptions) Failover() *FailoverOptions {
143143
SentinelUsername: o.SentinelUsername,
144144
SentinelPassword: o.SentinelPassword,
145145

146+
RouteByLatency: o.RouteByLatency,
147+
RouteRandomly: o.RouteRandomly,
148+
146149
MaxRetries: o.MaxRetries,
147150
MinRetryBackoff: o.MinRetryBackoff,
148151
MaxRetryBackoff: o.MaxRetryBackoff,
@@ -247,10 +250,14 @@ var (
247250
// 2. if the number of Addrs is two or more, a ClusterClient is returned.
248251
// 3. Otherwise, a single-node Client is returned.
249252
func NewUniversalClient(opts *UniversalOptions) UniversalClient {
250-
if opts.MasterName != "" {
253+
switch {
254+
case opts.MasterName != "" && (opts.RouteByLatency || opts.RouteRandomly):
255+
return NewFailoverClusterClient(opts.Failover())
256+
case opts.MasterName != "":
251257
return NewFailoverClient(opts.Failover())
252-
} else if len(opts.Addrs) > 1 || opts.IsClusterMode {
258+
case len(opts.Addrs) > 1 || opts.IsClusterMode:
253259
return NewClusterClient(opts.Cluster())
260+
default:
261+
return NewClient(opts.Simple())
254262
}
255-
return NewClient(opts.Simple())
256263
}

Diff for: universal_test.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ var _ = Describe("UniversalClient", func() {
2424
Expect(client.Ping(ctx).Err()).NotTo(HaveOccurred())
2525
})
2626

27+
It("should connect to failover cluster", Label("NonRedisEnterprise"), func() {
28+
client = redis.NewUniversalClient(&redis.UniversalOptions{
29+
MasterName: sentinelName,
30+
RouteRandomly: true,
31+
Addrs: sentinelAddrs,
32+
})
33+
_, ok := client.(*redis.ClusterClient)
34+
Expect(ok).To(BeTrue(), "expected a ClusterClient")
35+
})
36+
2737
It("should connect to simple servers", func() {
2838
client = redis.NewUniversalClient(&redis.UniversalOptions{
2939
Addrs: []string{redisAddr},
@@ -79,6 +89,7 @@ var _ = Describe("UniversalClient", func() {
7989
err = client.Set(ctx, "somekey", "somevalue", 0).Err()
8090
Expect(err).To(HaveOccurred())
8191
})
92+
8293
It("should connect to clusters if IsClusterMode is set even if only a single address is provided", Label("NonRedisEnterprise"), func() {
8394
client = redis.NewUniversalClient(&redis.UniversalOptions{
8495
Addrs: []string{cluster.addrs()[0]},
@@ -96,4 +107,3 @@ var _ = Describe("UniversalClient", func() {
96107
Expect(client.ClusterSlots(ctx).Val()).To(HaveLen(3))
97108
})
98109
})
99-

0 commit comments

Comments
 (0)