Skip to content

Commit 82e8a89

Browse files
committed
chore: Merge branch 'master' into v9
Signed-off-by: monkey92t <[email protected]>
2 parents 4261a2c + 40e84a7 commit 82e8a89

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+3080
-942
lines changed

.github/FUNDING.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
custom: ['https://uptrace.dev']
1+
custom: ['https://uptrace.dev/sponsor']

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,3 @@ contact_links:
33
- name: Discussions
44
url: https://github.com/go-redis/redis/discussions
55
about: Ask a question via GitHub Discussions
6-
- name: Discord
7-
url: https://discord.gg/rWtp5Aj
8-
about: Ask a question via Discord

.github/workflows/build.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ jobs:
1111
name: build
1212
runs-on: ubuntu-latest
1313
strategy:
14+
fail-fast: false
1415
matrix:
15-
go-version: [1.15.x, 1.16.x]
16+
go-version: [1.16.x, 1.17.x]
1617

1718
services:
1819
redis:
@@ -29,7 +30,7 @@ jobs:
2930
go-version: ${{ matrix.go-version }}
3031

3132
- name: Checkout code
32-
uses: actions/checkout@v2
33+
uses: actions/checkout@v3
3334

3435
- name: Test
3536
run: make test

.github/workflows/commitlint.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Lint Commit Messages
2+
on: [pull_request]
3+
4+
jobs:
5+
commitlint:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v3
9+
with:
10+
fetch-depth: 0
11+
- 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
@@ -15,6 +15,6 @@ jobs:
1515
name: lint
1616
runs-on: ubuntu-latest
1717
steps:
18-
- uses: actions/checkout@v2
18+
- uses: actions/checkout@v3
1919
- name: golangci-lint
2020
uses: golangci/golangci-lint-action@v2

.github/workflows/release.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Releases
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v3
13+
- uses: ncipollo/release-action@v1
14+
with:
15+
body:
16+
Please refer to
17+
[CHANGELOG.md](https://github.com/go-redis/redis/blob/master/CHANGELOG.md) for details

.golangci.yml

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,3 @@ run:
22
concurrency: 8
33
deadline: 5m
44
tests: false
5-
linters:
6-
enable-all: true
7-
disable:
8-
- funlen
9-
- gochecknoglobals
10-
- gochecknoinits
11-
- gocognit
12-
- goconst
13-
- godox
14-
- gosec
15-
- maligned
16-
- wsl
17-
- gomnd
18-
- goerr113
19-
- exhaustive
20-
- nestif
21-
- nlreturn
22-
- exhaustivestruct
23-
- wrapcheck
24-
- errorlint
25-
- cyclop
26-
- forcetypeassert
File renamed without changes.

CHANGELOG.md

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,41 @@
1-
# Changelog
1+
## [8.11.5](https://github.com/go-redis/redis/compare/v8.11.4...v8.11.5) (2022-03-17)
2+
3+
4+
### Bug Fixes
5+
6+
* add missing Expire methods to Cmdable ([17e3b43](https://github.com/go-redis/redis/commit/17e3b43879d516437ada71cf9c0deac6a382ed9a))
7+
* add whitespace for avoid unlikely colisions ([7f7c181](https://github.com/go-redis/redis/commit/7f7c1817617cfec909efb13d14ad22ef05a6ad4c))
8+
* example/otel compile error ([#2028](https://github.com/go-redis/redis/issues/2028)) ([187c07c](https://github.com/go-redis/redis/commit/187c07c41bf68dc3ab280bc3a925e960bbef6475))
9+
* **extra/redisotel:** set span.kind attribute to client ([065b200](https://github.com/go-redis/redis/commit/065b200070b41e6e949710b4f9e01b50ccc60ab2))
10+
* format ([96f53a0](https://github.com/go-redis/redis/commit/96f53a0159a28affa94beec1543a62234e7f8b32))
11+
* invalid type assert in stringArg ([de6c131](https://github.com/go-redis/redis/commit/de6c131865b8263400c8491777b295035f2408e4))
12+
* rename Golang to Go ([#2030](https://github.com/go-redis/redis/issues/2030)) ([b82a2d9](https://github.com/go-redis/redis/commit/b82a2d9d4d2de7b7cbe8fcd4895be62dbcacacbc))
13+
* set timeout for WAIT command. Fixes [#1963](https://github.com/go-redis/redis/issues/1963) ([333fee1](https://github.com/go-redis/redis/commit/333fee1a8fd98a2fbff1ab187c1b03246a7eb01f))
14+
* update some argument counts in pre-allocs ([f6974eb](https://github.com/go-redis/redis/commit/f6974ebb5c40a8adf90d2cacab6dc297f4eba4c2))
15+
16+
17+
### Features
18+
19+
* Add redis v7's NX, XX, GT, LT expire variants ([e19bbb2](https://github.com/go-redis/redis/commit/e19bbb26e2e395c6e077b48d80d79e99f729a8b8))
20+
* add support for acl sentinel auth in universal client ([ab0ccc4](https://github.com/go-redis/redis/commit/ab0ccc47413f9b2a6eabc852fed5005a3ee1af6e))
21+
* add support for COPY command ([#2016](https://github.com/go-redis/redis/issues/2016)) ([730afbc](https://github.com/go-redis/redis/commit/730afbcffb93760e8a36cc06cfe55ab102b693a7))
22+
* add support for passing extra attributes added to spans ([39faaa1](https://github.com/go-redis/redis/commit/39faaa171523834ba527c9789710c4fde87f5a2e))
23+
* add support for time.Duration write and scan ([2f1b74e](https://github.com/go-redis/redis/commit/2f1b74e20cdd7719b2aecf0768d3e3ae7c3e781b))
24+
* **redisotel:** ability to override TracerProvider ([#1998](https://github.com/go-redis/redis/issues/1998)) ([bf8d4aa](https://github.com/go-redis/redis/commit/bf8d4aa60c00366cda2e98c3ddddc8cf68507417))
25+
* set net.peer.name and net.peer.port in otel example ([69bf454](https://github.com/go-redis/redis/commit/69bf454f706204211cd34835f76b2e8192d3766d))
26+
27+
28+
29+
## [8.11.4](https://github.com/go-redis/redis/compare/v8.11.3...v8.11.4) (2021-10-04)
30+
31+
32+
### Features
33+
34+
* add acl auth support for sentinels ([f66582f](https://github.com/go-redis/redis/commit/f66582f44f3dc3a4705a5260f982043fde4aa634))
35+
* add Cmd.{String,Int,Float,Bool}Slice helpers and an example ([5d3d293](https://github.com/go-redis/redis/commit/5d3d293cc9c60b90871e2420602001463708ce24))
36+
* add SetVal method for each command ([168981d](https://github.com/go-redis/redis/commit/168981da2d84ee9e07d15d3e74d738c162e264c4))
37+
238

3-
> :heart:
4-
> [**Uptrace.dev** - All-in-one tool to optimize performance and monitor errors & logs](https://uptrace.dev)
539

640
## v9 UNRELEASED
741

Makefile

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
PACKAGE_DIRS := $(shell find . -mindepth 2 -type f -name 'go.mod' -exec dirname {} \; | sort)
2+
13
test: testdeps
24
go test ./...
35
go test ./... -short -race
@@ -19,8 +21,15 @@ testdata/redis:
1921
testdata/redis/src/redis-server: testdata/redis
2022
cd $< && make all
2123

22-
tag:
23-
git tag $(VERSION)
24-
git tag extra/rediscmd/$(VERSION)
25-
git tag extra/redisotel/$(VERSION)
26-
git tag extra/rediscensus/$(VERSION)
24+
fmt:
25+
gofmt -w -s ./
26+
goimports -w -local github.com/go-redis/redis ./
27+
28+
go_mod_tidy:
29+
go get -u && go mod tidy
30+
set -e; for dir in $(PACKAGE_DIRS); do \
31+
echo "go mod tidy in $${dir}"; \
32+
(cd "$${dir}" && \
33+
go get -u && \
34+
go mod tidy); \
35+
done

README.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,33 @@
1-
<p align="center">
2-
<a href="https://uptrace.dev/?utm_source=gh-redis&utm_campaign=gh-redis-banner1">
3-
<img src="https://github.com/raw/uptrace/roadmap/master/banner1.png" alt="All-in-one tool to optimize performance and monitor errors & logs">
4-
</a>
5-
</p>
6-
7-
# Redis client for Golang
1+
# Redis client for Go
82

93
![build workflow](https://github.com/go-redis/redis/actions/workflows/build.yml/badge.svg)
104
[![PkgGoDev](https://pkg.go.dev/badge/github.com/go-redis/redis/v8)](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc)
115
[![Documentation](https://img.shields.io/badge/redis-documentation-informational)](https://redis.uptrace.dev/)
126
[![Chat](https://discordapp.com/api/guilds/752070105847955518/widget.png)](https://discord.gg/rWtp5Aj)
137

14-
- Join [Discord](https://discord.gg/rWtp5Aj) to ask questions.
8+
go-redis is brought to you by :star: [**uptrace/uptrace**](https://github.com/uptrace/uptrace).
9+
Uptrace is an open source and blazingly fast **distributed tracing** backend powered by
10+
OpenTelemetry and ClickHouse. Give it a star as well!
11+
12+
## Resources
13+
14+
- [Discussions](https://github.com/go-redis/redis/discussions)
1515
- [Documentation](https://redis.uptrace.dev)
1616
- [Reference](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc)
1717
- [Examples](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#pkg-examples)
1818
- [RealWorld example app](https://github.com/uptrace/go-treemux-realworld-example-app)
1919

20-
My other projects:
20+
Other projects you may like:
2121

2222
- [Bun](https://bun.uptrace.dev) - fast and simple SQL client for PostgreSQL, MySQL, and SQLite.
23-
- [treemux](https://github.com/vmihailenco/treemux) - high-speed, flexible, tree-based HTTP router
24-
for Go.
23+
- [BunRouter](https://bunrouter.uptrace.dev/) - fast and flexible HTTP router for Go.
2524

2625
## Ecosystem
2726

28-
- [Redis Mock](https://github.com/go-redis/redismock).
29-
- [Distributed Locks](https://github.com/bsm/redislock).
30-
- [Redis Cache](https://github.com/go-redis/cache).
31-
- [Rate limiting](https://github.com/go-redis/redis_rate).
27+
- [Redis Mock](https://github.com/go-redis/redismock)
28+
- [Distributed Locks](https://github.com/bsm/redislock)
29+
- [Redis Cache](https://github.com/go-redis/cache)
30+
- [Rate limiting](https://github.com/go-redis/redis_rate)
3231

3332
## Features
3433

@@ -37,16 +36,16 @@ My other projects:
3736
[circuit breaker](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern) support.
3837
- [Pub/Sub](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#PubSub).
3938
- [Transactions](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-Client-TxPipeline).
40-
- [Pipeline](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-Client-Pipeline) and
41-
[TxPipeline](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-Client-TxPipeline).
39+
- [Pipeline](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-Client.Pipeline) and
40+
[TxPipeline](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-Client.TxPipeline).
4241
- [Scripting](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#Script).
4342
- [Timeouts](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#Options).
4443
- [Redis Sentinel](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#NewFailoverClient).
4544
- [Redis Cluster](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#NewClusterClient).
46-
- [Cluster of Redis Servers](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-NewClusterClient--ManualSetup)
45+
- [Cluster of Redis Servers](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-NewClusterClient-ManualSetup)
4746
without using cluster mode and Redis Sentinel.
4847
- [Ring](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#NewRing).
49-
- [Instrumentation](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#ex-package--Instrumentation).
48+
- [Instrumentation](https://pkg.go.dev/github.com/go-redis/redis/v8?tab=doc#example-package-Instrumentation).
5049

5150
## Installation
5251

@@ -70,6 +69,7 @@ go get github.com/go-redis/redis/v8
7069
import (
7170
"context"
7271
"github.com/go-redis/redis/v8"
72+
"fmt"
7373
)
7474

7575
var ctx = context.Background()

RELEASING.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Releasing
2+
3+
1. Run `release.sh` script which updates versions in go.mod files and pushes a new branch to GitHub:
4+
5+
```shell
6+
TAG=v1.0.0 ./scripts/release.sh
7+
```
8+
9+
2. Open a pull request and wait for the build to finish.
10+
11+
3. Merge the pull request and run `tag.sh` to create tags for packages:
12+
13+
```shell
14+
TAG=v1.0.0 ./scripts/tag.sh
15+
```

bench_test.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"context"
66
"fmt"
7+
"strconv"
78
"strings"
89
"sync"
910
"testing"
@@ -233,6 +234,45 @@ func BenchmarkZAdd(b *testing.B) {
233234
})
234235
}
235236

237+
func BenchmarkXRead(b *testing.B) {
238+
ctx := context.Background()
239+
client := benchmarkRedisClient(ctx, 10)
240+
defer client.Close()
241+
242+
args := redis.XAddArgs{
243+
Stream: "1",
244+
ID: "*",
245+
Values: map[string]string{"uno": "dos"},
246+
}
247+
248+
lenStreams := 16
249+
streams := make([]string, 0, lenStreams)
250+
for i := 0; i < lenStreams; i++ {
251+
streams = append(streams, strconv.Itoa(i))
252+
}
253+
for i := 0; i < lenStreams; i++ {
254+
streams = append(streams, "0")
255+
}
256+
257+
b.ReportAllocs()
258+
b.ResetTimer()
259+
260+
b.RunParallel(func(pb *testing.PB) {
261+
for pb.Next() {
262+
client.XAdd(ctx, &args)
263+
264+
err := client.XRead(ctx, &redis.XReadArgs{
265+
Streams: streams,
266+
Count: 1,
267+
Block: time.Second,
268+
}).Err()
269+
if err != nil {
270+
b.Fatal(err)
271+
}
272+
}
273+
})
274+
}
275+
236276
var clientSink *redis.Client
237277

238278
func BenchmarkWithContext(b *testing.B) {
@@ -301,6 +341,32 @@ func BenchmarkClusterPing(b *testing.B) {
301341
})
302342
}
303343

344+
func BenchmarkClusterDoInt(b *testing.B) {
345+
if testing.Short() {
346+
b.Skip("skipping in short mode")
347+
}
348+
349+
ctx := context.Background()
350+
cluster := newClusterScenario()
351+
if err := startCluster(ctx, cluster); err != nil {
352+
b.Fatal(err)
353+
}
354+
defer cluster.Close()
355+
356+
client := cluster.newClusterClient(ctx, redisClusterOptions())
357+
defer client.Close()
358+
359+
b.ResetTimer()
360+
b.RunParallel(func(pb *testing.PB) {
361+
for pb.Next() {
362+
err := client.Do(ctx, "SET", 10, 10).Err()
363+
if err != nil {
364+
b.Fatal(err)
365+
}
366+
}
367+
})
368+
}
369+
304370
func BenchmarkClusterSetString(b *testing.B) {
305371
if testing.Short() {
306372
b.Skip("skipping in short mode")

0 commit comments

Comments
 (0)