Skip to content

Commit a24f3b8

Browse files
authored
Merge branch 'master' into add-conn-pool-wait-stats
2 parents 9dae701 + 73c879d commit a24f3b8

File tree

25 files changed

+102
-86
lines changed

25 files changed

+102
-86
lines changed

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,16 @@ import (
149149
"github.com/redis/go-redis/v9"
150150
)
151151

152-
var ctx = context.Background()
153-
154-
func ExampleClient() {
155-
url := "redis://localhost:6379?password=hello&protocol=3"
152+
func ExampleClient() *redis.Client {
153+
url := "redis://user:password@localhost:6379/0?protocol=3"
156154
opts, err := redis.ParseURL(url)
157155
if err != nil {
158156
panic(err)
159157
}
160-
rdb := redis.NewClient(opts)
158+
159+
return redis.NewClient(opts)
160+
}
161+
161162
```
162163

163164
## Contributing

bench_decode_test.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,6 @@ func NewClusterClientStub(resp []byte) *ClientStub {
5959
},
6060
})
6161

62-
// init command.
63-
tmpClient := NewClient(&Options{Addr: ":6379"})
64-
cmdsInfo, err := tmpClient.Command(ctx).Result()
65-
_ = tmpClient.Close()
66-
client.cmdsInfoCache = newCmdsInfoCache(func(_ context.Context) (map[string]*CommandInfo, error) {
67-
return cmdsInfo, err
68-
})
69-
7062
stub.Cmdable = client
7163
return stub
7264
}

bitmap_commands.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package redis
22

3-
import "context"
3+
import (
4+
"context"
5+
)
46

57
type BitMapCmdable interface {
68
GetBit(ctx context.Context, key string, offset int64) *IntCmd
@@ -127,3 +129,21 @@ func (c cmdable) BitField(ctx context.Context, key string, values ...interface{}
127129
_ = c(ctx, cmd)
128130
return cmd
129131
}
132+
133+
// BitFieldRO - Read-only variant of the BITFIELD command.
134+
// It is like the original BITFIELD but only accepts GET subcommand and can safely be used in read-only replicas.
135+
// - BitFieldRO(ctx, key, "<Encoding0>", "<Offset0>", "<Encoding1>","<Offset1>")
136+
func (c cmdable) BitFieldRO(ctx context.Context, key string, values ...interface{}) *IntSliceCmd {
137+
args := make([]interface{}, 2, 2+len(values))
138+
args[0] = "BITFIELD_RO"
139+
args[1] = key
140+
if len(values)%2 != 0 {
141+
panic("BitFieldRO: invalid number of arguments, must be even")
142+
}
143+
for i := 0; i < len(values); i += 2 {
144+
args = append(args, "GET", values[i], values[i+1])
145+
}
146+
cmd := NewIntSliceCmd(ctx, args...)
147+
_ = c(ctx, cmd)
148+
return cmd
149+
}

command.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,22 @@ import (
1818
)
1919

2020
type Cmder interface {
21+
// command name.
22+
// e.g. "set k v ex 10" -> "set", "cluster info" -> "cluster".
2123
Name() string
24+
25+
// full command name.
26+
// e.g. "set k v ex 10" -> "set", "cluster info" -> "cluster info".
2227
FullName() string
28+
29+
// all args of the command.
30+
// e.g. "set k v ex 10" -> "[set k v ex 10]".
2331
Args() []interface{}
32+
33+
// format request and response string.
34+
// e.g. "set k v ex 10" -> "set k v ex 10: OK", "get k" -> "get k: v".
2435
String() string
36+
2537
stringArg(int) string
2638
firstKeyPos() int8
2739
SetFirstKeyPos(int8)
@@ -63,7 +75,7 @@ func writeCmd(wr *proto.Writer, cmd Cmder) error {
6375
return wr.WriteArgs(cmd.Args())
6476
}
6577

66-
func cmdFirstKeyPos(cmd Cmder, info *CommandInfo) int {
78+
func cmdFirstKeyPos(cmd Cmder) int {
6779
if pos := cmd.firstKeyPos(); pos != 0 {
6880
return int(pos)
6981
}
@@ -83,10 +95,6 @@ func cmdFirstKeyPos(cmd Cmder, info *CommandInfo) int {
8395
return 2
8496
}
8597
}
86-
87-
if info != nil {
88-
return int(info.FirstKeyPos)
89-
}
9098
return 1
9199
}
92100

@@ -5370,7 +5378,6 @@ func (cmd *InfoCmd) readReply(rd *proto.Reader) error {
53705378
}
53715379

53725380
return nil
5373-
53745381
}
53755382

53765383
func (cmd *InfoCmd) Item(section, key string) string {

commands_test.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,6 +1279,20 @@ var _ = Describe("Commands", func() {
12791279
Expect(nn).To(Equal([]int64{0, 4}))
12801280
})
12811281

1282+
It("should BitFieldRO", func() {
1283+
nn, err := client.BitField(ctx, "mykey", "SET", "u8", 8, 255).Result()
1284+
Expect(err).NotTo(HaveOccurred())
1285+
Expect(nn).To(Equal([]int64{0}))
1286+
1287+
nn, err = client.BitFieldRO(ctx, "mykey", "u8", 0).Result()
1288+
Expect(err).NotTo(HaveOccurred())
1289+
Expect(nn).To(Equal([]int64{0}))
1290+
1291+
nn, err = client.BitFieldRO(ctx, "mykey", "u8", 0, "u4", 8, "u4", 12, "u4", 13).Result()
1292+
Expect(err).NotTo(HaveOccurred())
1293+
Expect(nn).To(Equal([]int64{0, 15, 15, 14}))
1294+
})
1295+
12821296
It("should Decr", func() {
12831297
set := client.Set(ctx, "key", "10", 0)
12841298
Expect(set.Err()).NotTo(HaveOccurred())
@@ -3708,28 +3722,28 @@ var _ = Describe("Commands", func() {
37083722
It("should ZAdd bytes", func() {
37093723
added, err := client.ZAdd(ctx, "zset", redis.Z{
37103724
Score: 1,
3711-
Member: []byte("one"),
3725+
Member: "one",
37123726
}).Result()
37133727
Expect(err).NotTo(HaveOccurred())
37143728
Expect(added).To(Equal(int64(1)))
37153729

37163730
added, err = client.ZAdd(ctx, "zset", redis.Z{
37173731
Score: 1,
3718-
Member: []byte("uno"),
3732+
Member: "uno",
37193733
}).Result()
37203734
Expect(err).NotTo(HaveOccurred())
37213735
Expect(added).To(Equal(int64(1)))
37223736

37233737
added, err = client.ZAdd(ctx, "zset", redis.Z{
37243738
Score: 2,
3725-
Member: []byte("two"),
3739+
Member: "two",
37263740
}).Result()
37273741
Expect(err).NotTo(HaveOccurred())
37283742
Expect(added).To(Equal(int64(1)))
37293743

37303744
added, err = client.ZAdd(ctx, "zset", redis.Z{
37313745
Score: 3,
3732-
Member: []byte("two"),
3746+
Member: "two",
37333747
}).Result()
37343748
Expect(err).NotTo(HaveOccurred())
37353749
Expect(added).To(Equal(int64(0)))

example/del-keys-without-ttl/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.18
55
replace github.com/redis/go-redis/v9 => ../..
66

77
require (
8-
github.com/redis/go-redis/v9 v9.3.0
8+
github.com/redis/go-redis/v9 v9.3.1
99
go.uber.org/zap v1.24.0
1010
)
1111

example/hll/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.18
44

55
replace github.com/redis/go-redis/v9 => ../..
66

7-
require github.com/redis/go-redis/v9 v9.3.0
7+
require github.com/redis/go-redis/v9 v9.3.1
88

99
require (
1010
github.com/cespare/xxhash/v2 v2.2.0 // indirect

example/lua-scripting/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
module github.com/redis/go-redis/example/redis-bloom
1+
module github.com/redis/go-redis/example/lua-scripting
22

33
go 1.18
44

55
replace github.com/redis/go-redis/v9 => ../..
66

7-
require github.com/redis/go-redis/v9 v9.3.0
7+
require github.com/redis/go-redis/v9 v9.3.1
88

99
require (
1010
github.com/cespare/xxhash/v2 v2.2.0 // indirect

example/otel/go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ replace github.com/redis/go-redis/extra/redisotel/v9 => ../../extra/redisotel
99
replace github.com/redis/go-redis/extra/rediscmd/v9 => ../../extra/rediscmd
1010

1111
require (
12-
github.com/redis/go-redis/extra/redisotel/v9 v9.3.0
13-
github.com/redis/go-redis/v9 v9.3.0
12+
github.com/redis/go-redis/extra/redisotel/v9 v9.3.1
13+
github.com/redis/go-redis/v9 v9.3.1
1414
github.com/uptrace/uptrace-go v1.16.0
1515
go.opentelemetry.io/otel v1.16.0
1616
)
@@ -23,7 +23,7 @@ require (
2323
github.com/go-logr/stdr v1.2.2 // indirect
2424
github.com/golang/protobuf v1.5.3 // indirect
2525
github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2 // indirect
26-
github.com/redis/go-redis/extra/rediscmd/v9 v9.3.0 // indirect
26+
github.com/redis/go-redis/extra/rediscmd/v9 v9.3.1 // indirect
2727
go.opentelemetry.io/contrib/instrumentation/runtime v0.42.0 // indirect
2828
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect
2929
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.39.0 // indirect

example/redis-bloom/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.18
44

55
replace github.com/redis/go-redis/v9 => ../..
66

7-
require github.com/redis/go-redis/v9 v9.3.0
7+
require github.com/redis/go-redis/v9 v9.3.1
88

99
require (
1010
github.com/cespare/xxhash/v2 v2.2.0 // indirect

0 commit comments

Comments
 (0)