Skip to content

Commit 04b1478

Browse files
committed
Merge branch 'master' of github.com:go-redis/redis
2 parents dbd417a + d28f1f8 commit 04b1478

File tree

14 files changed

+133
-37
lines changed

14 files changed

+133
-37
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
go-version: ${{ matrix.go-version }}
3131

3232
- name: Checkout code
33-
uses: actions/checkout@v2
33+
uses: actions/checkout@v3
3434

3535
- name: Test
3636
run: make test

.github/workflows/commitlint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ jobs:
55
commitlint:
66
runs-on: ubuntu-latest
77
steps:
8-
- uses: actions/checkout@v2
8+
- uses: actions/checkout@v3
99
with:
1010
fetch-depth: 0
1111
- uses: wagoid/commitlint-github-action@v4

.github/workflows/golangci-lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ jobs:
1414
name: lint
1515
runs-on: ubuntu-latest
1616
steps:
17-
- uses: actions/checkout@v2
17+
- uses: actions/checkout@v3
1818
- name: golangci-lint
1919
uses: golangci/golangci-lint-action@v2

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
build:
1010
runs-on: ubuntu-latest
1111
steps:
12-
- uses: actions/checkout@v2
12+
- uses: actions/checkout@v3
1313
- uses: ncipollo/release-action@v1
1414
with:
1515
body:

commands.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ type Cmdable interface {
143143
SetXX(ctx context.Context, key string, value interface{}, expiration time.Duration) *BoolCmd
144144
SetRange(ctx context.Context, key string, offset int64, value string) *IntCmd
145145
StrLen(ctx context.Context, key string) *IntCmd
146+
Copy(ctx context.Context, sourceKey string, destKey string, db int, replace bool) *IntCmd
146147

147148
GetBit(ctx context.Context, key string, offset int64) *IntCmd
148149
SetBit(ctx context.Context, key string, offset int64, value int) *IntCmd
@@ -1025,6 +1026,16 @@ func (c cmdable) StrLen(ctx context.Context, key string) *IntCmd {
10251026
return cmd
10261027
}
10271028

1029+
func (c cmdable) Copy(ctx context.Context, sourceKey, destKey string, db int, replace bool) *IntCmd {
1030+
args := []interface{}{"copy", sourceKey, destKey, "DB", db}
1031+
if replace {
1032+
args = append(args, "REPLACE")
1033+
}
1034+
cmd := NewIntCmd(ctx, args...)
1035+
_ = c(ctx, cmd)
1036+
return cmd
1037+
}
1038+
10281039
//------------------------------------------------------------------------------
10291040

10301041
func (c cmdable) GetBit(ctx context.Context, key string, offset int64) *IntCmd {

commands_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,6 +1633,32 @@ var _ = Describe("Commands", func() {
16331633
Expect(strLen.Err()).NotTo(HaveOccurred())
16341634
Expect(strLen.Val()).To(Equal(int64(0)))
16351635
})
1636+
1637+
It("should Copy", func() {
1638+
set := client.Set(ctx, "key", "hello", 0)
1639+
Expect(set.Err()).NotTo(HaveOccurred())
1640+
Expect(set.Val()).To(Equal("OK"))
1641+
1642+
copy := client.Copy(ctx, "key", "newKey", redisOptions().DB, false)
1643+
Expect(copy.Err()).NotTo(HaveOccurred())
1644+
Expect(copy.Val()).To(Equal(int64(1)))
1645+
1646+
// Value is available by both keys now
1647+
getOld := client.Get(ctx, "key")
1648+
Expect(getOld.Err()).NotTo(HaveOccurred())
1649+
Expect(getOld.Val()).To(Equal("hello"))
1650+
getNew := client.Get(ctx, "newKey")
1651+
Expect(getNew.Err()).NotTo(HaveOccurred())
1652+
Expect(getNew.Val()).To(Equal("hello"))
1653+
1654+
// Overwriting an existing key should not succeed
1655+
overwrite := client.Copy(ctx, "newKey", "key", redisOptions().DB, false)
1656+
Expect(overwrite.Val()).To(Equal(int64(0)))
1657+
1658+
// Overwrite is allowed when replace=rue
1659+
replace := client.Copy(ctx, "newKey", "key", redisOptions().DB, true)
1660+
Expect(replace.Val()).To(Equal(int64(1)))
1661+
})
16361662
})
16371663

16381664
Describe("hashes", func() {

example/otel/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require (
1414
github.com/uptrace/opentelemetry-go-extra/otelplay v0.1.3
1515
github.com/uptrace/uptrace-go v1.1.0 // indirect
1616
go.opentelemetry.io/contrib/instrumentation/runtime v0.26.1 // indirect
17-
go.opentelemetry.io/otel v1.3.0
17+
go.opentelemetry.io/otel v1.4.1
1818
go.opentelemetry.io/proto/otlp v0.10.0 // indirect
1919
golang.org/x/net v0.0.0-20211104170005-ce137452f963 // indirect
2020
google.golang.org/genproto v0.0.0-20211104193956-4c6863e31247 // indirect

example/otel/go.sum

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo
4141
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
4242
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
4343
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
44-
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
45-
github.com/go-logr/logr v1.2.1 h1:DX7uPQ4WgAWfoh+NGGlbJQswnYIVvz0SRlLS3rPZQDA=
46-
github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
47-
github.com/go-logr/stdr v1.2.0 h1:j4LrlVXgrbIWO83mmQUnK0Hi+YnbD+vzrE1z/EphbFE=
48-
github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI=
44+
github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs=
45+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
46+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
47+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
4948
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
5049
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
5150
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
@@ -69,8 +68,9 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
6968
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
7069
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
7170
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
72-
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
7371
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
72+
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
73+
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
7474
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
7575
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
7676
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
@@ -120,8 +120,8 @@ go.opentelemetry.io/contrib/instrumentation/runtime v0.26.1 h1:JFqFA2LXzEJiJ+z4+
120120
go.opentelemetry.io/contrib/instrumentation/runtime v0.26.1/go.mod h1:lWhqpZXOrSw6XwhSK1duzdmc34jT7Cr5EO5yq9TiOJA=
121121
go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU=
122122
go.opentelemetry.io/otel v1.1.0/go.mod h1:7cww0OW51jQ8IaZChIEdqLwgh+44+7uiTdWsAL0wQpA=
123-
go.opentelemetry.io/otel v1.3.0 h1:APxLf0eiBwLl+SOXiJJCVYzA1OOJNyAoV8C5RNRyy7Y=
124-
go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs=
123+
go.opentelemetry.io/otel v1.4.1 h1:QbINgGDDcoQUoMJa2mMaWno49lja9sHwp6aoa2n3a4g=
124+
go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4=
125125
go.opentelemetry.io/otel/exporters/jaeger v1.1.0 h1:VRF+Hf3EePFO6ab7/wfPoyWzSY4z5X0tTvQtV9/Mq8Y=
126126
go.opentelemetry.io/otel/exporters/jaeger v1.1.0/go.mod h1:D/GIBwAdrFTTqCy1iITpC9nh5rgJpIbFVgkhlz2vCXk=
127127
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.24.0 h1:NN6n2agAkT6j2o+1RPTFANclOnZ/3Z1ruRGL06NYACk=
@@ -142,16 +142,17 @@ go.opentelemetry.io/otel/internal/metric v0.24.0/go.mod h1:PSkQG+KuApZjBpC6ea608
142142
go.opentelemetry.io/otel/metric v0.24.0 h1:Rg4UYHS6JKR1Sw1TxnI13z7q/0p/XAbgIqUTagvLJuU=
143143
go.opentelemetry.io/otel/metric v0.24.0/go.mod h1:tpMFnCD9t+BEGiWY2bWF5+AwjuAdM0lSowQ4SBA3/K4=
144144
go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI=
145-
go.opentelemetry.io/otel/sdk v1.1.0 h1:j/1PngUJIDOddkCILQYTevrTIbWd494djgGkSsMit+U=
146145
go.opentelemetry.io/otel/sdk v1.1.0/go.mod h1:3aQvM6uLm6C4wJpHtT8Od3vNzeZ34Pqc6bps8MywWzo=
146+
go.opentelemetry.io/otel/sdk v1.4.1 h1:J7EaW71E0v87qflB4cDolaqq3AcujGrtyIPGQoZOB0Y=
147+
go.opentelemetry.io/otel/sdk v1.4.1/go.mod h1:NBwHDgDIBYjwK2WNu1OPgsIc2IJzmBXNnvIJxJc8BpE=
147148
go.opentelemetry.io/otel/sdk/export/metric v0.24.0 h1:innKi8LQebwPI+WEuEKEWMjhWC5mXQG1/WpSm5mffSY=
148149
go.opentelemetry.io/otel/sdk/export/metric v0.24.0/go.mod h1:chmxXGVNcpCih5XyniVkL4VUyaEroUbOdvjVlQ8M29Y=
149150
go.opentelemetry.io/otel/sdk/metric v0.24.0 h1:LLHrZikGdEHoHihwIPvfFRJX+T+NdrU2zgEqf7tQ7Oo=
150151
go.opentelemetry.io/otel/sdk/metric v0.24.0/go.mod h1:KDgJgYzsIowuIDbPM9sLDZY9JJ6gqIDWCx92iWV8ejk=
151152
go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk=
152153
go.opentelemetry.io/otel/trace v1.1.0/go.mod h1:i47XtdcBQiktu5IsrPqOHe8w+sBmnLwwHt8wiUsWGTI=
153-
go.opentelemetry.io/otel/trace v1.3.0 h1:doy8Hzb1RJ+I3yFhtDmwNc7tIyw1tNMOIsyPzp1NOGY=
154-
go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk=
154+
go.opentelemetry.io/otel/trace v1.4.1 h1:O+16qcdTrT7zxv2J6GejTPFinSwA++cYerC5iSiF8EQ=
155+
go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc=
155156
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
156157
go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg=
157158
go.opentelemetry.io/proto/otlp v0.10.0 h1:n7brgtEbDvXEgGyKKo8SobKT1e9FewlDtXzkVP5djoE=

example/otel/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import (
55
"log"
66
"sync"
77

8-
98
"github.com/uptrace/opentelemetry-go-extra/otelplay"
109
"go.opentelemetry.io/otel"
1110
"go.opentelemetry.io/otel/codes"
11+
semconv "go.opentelemetry.io/otel/semconv/v1.7.0"
1212

1313
"github.com/go-redis/redis/extra/redisotel/v8"
1414
"github.com/go-redis/redis/v8"
@@ -25,7 +25,7 @@ func main() {
2525
rdb := redis.NewClient(&redis.Options{
2626
Addr: ":6379",
2727
})
28-
rdb.AddHook(redisotel.NewTracingHook())
28+
rdb.AddHook(redisotel.NewTracingHook(redisotel.WithAttributes(semconv.NetPeerNameKey.String("localhost"), semconv.NetPeerPortKey.String("6379"))))
2929

3030
ctx, span := tracer.Start(ctx, "handleRequest")
3131
defer span.End()

extra/redisotel/go.mod

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ replace github.com/go-redis/redis/extra/rediscmd/v8 => ../rediscmd
99
require (
1010
github.com/go-redis/redis/extra/rediscmd/v8 v8.11.4
1111
github.com/go-redis/redis/v8 v8.11.4
12-
go.opentelemetry.io/otel v1.3.0
13-
go.opentelemetry.io/otel/trace v1.3.0
12+
go.opentelemetry.io/otel v1.4.1
13+
go.opentelemetry.io/otel/sdk v1.4.1
14+
go.opentelemetry.io/otel/trace v1.4.1
1415
)

0 commit comments

Comments
 (0)