Skip to content

Commit bf8e8e3

Browse files
authored
chore(release): v9.18.0 (#3711)
* chore(release): add release notes * chore(release): update version
1 parent a881cd4 commit bf8e8e3

File tree

16 files changed

+100
-19
lines changed

16 files changed

+100
-19
lines changed

RELEASE-NOTES.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,86 @@
11
# Release Notes
22

3+
# 9.18.0 (2026-02-16)
4+
5+
## 🚀 Highlights
6+
7+
### Redis 8.6 Support
8+
9+
Added support for Redis 8.6, including new commands and features for streams idempotent production and HOTKEYS.
10+
11+
### Smart Client Handoff (Maintenance Notifications) for Cluster
12+
13+
This release introduces comprehensive support for Redis Cluster maintenance notifications via SMIGRATING/SMIGRATED push notifications. The client now automatically handles slot migrations by:
14+
- **Relaxing timeouts during migration** (SMIGRATING) to prevent false failures
15+
- **Triggering lazy cluster state reloads** upon completion (SMIGRATED)
16+
- Enabling seamless operations during Redis Enterprise maintenance windows
17+
18+
([#3643](https://github.com/redis/go-redis/pull/3643)) by [@ndyakov](https://github.com/ndyakov)
19+
20+
### OpenTelemetry Native Metrics Support
21+
22+
Added comprehensive OpenTelemetry metrics support following the [OpenTelemetry Database Client Semantic Conventions](https://opentelemetry.io/docs/specs/semconv/database/database-metrics/). The implementation uses a Bridge Pattern to keep the core library dependency-free while providing optional metrics instrumentation through the new `extra/redisotel-native` package.
23+
24+
**Metric groups include:**
25+
- Command metrics: Operation duration with retry tracking
26+
- Connection basic: Connection count and creation time
27+
- Resiliency: Errors, handoffs, timeout relaxation
28+
- Connection advanced: Wait time and use time
29+
- Pubsub metrics: Published and received messages
30+
- Stream metrics: Processing duration and maintenance notifications
31+
32+
([#3637](https://github.com/redis/go-redis/pull/3637)) by [@ofekshenawa](https://github.com/ofekshenawa)
33+
34+
## ✨ New Features
35+
36+
- **HOTKEYS Commands**: Added support for Redis HOTKEYS feature for identifying hot keys based on CPU consumption and network utilization ([#3695](https://github.com/redis/go-redis/pull/3695)) by [@ofekshenawa](https://github.com/ofekshenawa)
37+
- **Streams Idempotent Production**: Added support for Redis 8.6+ Streams Idempotent Production with `ProducerID`, `IdempotentID`, `IdempotentAuto` in `XAddArgs` and new `XCFGSET` command ([#3693](https://github.com/redis/go-redis/pull/3693)) by [@ofekshenawa](https://github.com/ofekshenawa)
38+
- **NaN Values for TimeSeries**: Added support for NaN (Not a Number) values in Redis time series commands ([#3687](https://github.com/redis/go-redis/pull/3687)) by [@ofekshenawa](https://github.com/ofekshenawa)
39+
- **DialerRetries Options**: Added `DialerRetries` and `DialerRetryTimeout` to `ClusterOptions`, `RingOptions`, and `FailoverOptions` ([#3686](https://github.com/redis/go-redis/pull/3686)) by [@naveenchander30](https://github.com/naveenchander30)
40+
- **ConnMaxLifetimeJitter**: Added jitter configuration to distribute connection expiration times and prevent thundering herd ([#3666](https://github.com/redis/go-redis/pull/3666)) by [@cyningsun](https://github.com/cyningsun)
41+
- **Digest Helper Functions**: Added `DigestString` and `DigestBytes` helper functions for client-side xxh3 hashing compatible with Redis DIGEST command ([#3679](https://github.com/redis/go-redis/pull/3679)) by [@ofekshenawa](https://github.com/ofekshenawa)
42+
- **SMIGRATED New Format**: Updated SMIGRATED parser to support new format and remember original host:port ([#3697](https://github.com/redis/go-redis/pull/3697)) by [@ndyakov](https://github.com/ndyakov)
43+
- **Cluster State Reload Interval**: Added cluster state reload interval option for maintenance notifications ([#3663](https://github.com/redis/go-redis/pull/3663)) by [@ndyakov](https://github.com/ndyakov)
44+
45+
## 🐛 Bug Fixes
46+
47+
- **PubSub nil pointer dereference**: Fixed nil pointer dereference in PubSub after `WithTimeout()` - `pubSubPool` is now properly cloned ([#3710](https://github.com/redis/go-redis/pull/3710)) by [@Copilot](https://github.com/apps/copilot-swe-agent)
48+
- **MaintNotificationsConfig nil check**: Guard against nil `MaintNotificationsConfig` in `initConn` ([#3707](https://github.com/redis/go-redis/pull/3707)) by [@veeceey](https://github.com/veeceey)
49+
- **wantConnQueue zombie elements**: Fixed zombie `wantConn` elements accumulation in `wantConnQueue` ([#3680](https://github.com/redis/go-redis/pull/3680)) by [@cyningsun](https://github.com/cyningsun)
50+
- **XADD/XTRIM approx flag**: Fixed XADD and XTRIM to use `=` when approx is false ([#3684](https://github.com/redis/go-redis/pull/3684)) by [@ndyakov](https://github.com/ndyakov)
51+
- **Sentinel timeout retry**: When connection to a sentinel times out, attempt to connect to other sentinels ([#3654](https://github.com/redis/go-redis/pull/3654)) by [@cxljs](https://github.com/cxljs)
52+
53+
## ⚡ Performance
54+
55+
- **Fuzz test optimization**: Eliminated repeated string conversions, used functional approach for cleaner operation selection ([#3692](https://github.com/redis/go-redis/pull/3692)) by [@feiguoL](https://github.com/feiguoL)
56+
- **Pre-allocate capacity**: Pre-allocate slice capacity to prevent multiple capacity expansions ([#3689](https://github.com/redis/go-redis/pull/3689)) by [@feelshu](https://github.com/feelshu)
57+
58+
## 🧪 Testing
59+
60+
- **Comprehensive TLS tests**: Added comprehensive TLS tests and example for standalone, cluster, and certificate authentication ([#3681](https://github.com/redis/go-redis/pull/3681)) by [@ndyakov](https://github.com/ndyakov)
61+
- **Redis 8.6**: Updated CI to use Redis 8.6-pre ([#3685](https://github.com/redis/go-redis/pull/3685)) by [@ndyakov](https://github.com/ndyakov)
62+
63+
## 🧰 Maintenance
64+
65+
- **Deprecation warnings**: Added deprecation warnings for commands based on Redis documentation ([#3673](https://github.com/redis/go-redis/pull/3673)) by [@ndyakov](https://github.com/ndyakov)
66+
- **Use errors.Join()**: Replaced custom error join function with standard library `errors.Join()` ([#3653](https://github.com/redis/go-redis/pull/3653)) by [@cxljs](https://github.com/cxljs)
67+
- **Use Go 1.21 min/max**: Use Go 1.21's built-in min/max functions ([#3656](https://github.com/redis/go-redis/pull/3656)) by [@cxljs](https://github.com/cxljs)
68+
- **Proper formatting**: Code formatting improvements ([#3670](https://github.com/redis/go-redis/pull/3670)) by [@12ya](https://github.com/12ya)
69+
- **Set commands documentation**: Added comprehensive documentation to all set command methods ([#3642](https://github.com/redis/go-redis/pull/3642)) by [@iamamirsalehi](https://github.com/iamamirsalehi)
70+
- **MaxActiveConns docs**: Added default value documentation for `MaxActiveConns` ([#3674](https://github.com/redis/go-redis/pull/3674)) by [@codykaup](https://github.com/codykaup)
71+
- **README example update**: Updated README example ([#3657](https://github.com/redis/go-redis/pull/3657)) by [@cxljs](https://github.com/cxljs)
72+
- **Cluster maintnotif example**: Added example application for cluster maintenance notifications ([#3651](https://github.com/redis/go-redis/pull/3651)) by [@ndyakov](https://github.com/ndyakov)
73+
74+
## 👥 Contributors
75+
76+
We'd like to thank all the contributors who worked on this release!
77+
78+
[@12ya](https://github.com/12ya), [@Copilot](https://github.com/apps/copilot-swe-agent), [@codykaup](https://github.com/codykaup), [@cxljs](https://github.com/cxljs), [@cyningsun](https://github.com/cyningsun), [@feelshu](https://github.com/feelshu), [@feiguoL](https://github.com/feiguoL), [@iamamirsalehi](https://github.com/iamamirsalehi), [@naveenchander30](https://github.com/naveenchander30), [@ndyakov](https://github.com/ndyakov), [@ofekshenawa](https://github.com/ofekshenawa), [@veeceey](https://github.com/veeceey)
79+
80+
---
81+
82+
**Full Changelog**: https://github.com/redis/go-redis/compare/v9.17.0...v9.18.0
83+
384
# 9.18.0-beta.2 (2025-12-09)
485

586
## 🚀 Highlights

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.21
55
replace github.com/redis/go-redis/v9 => ../..
66

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

example/digest-optimistic-locking/go.mod

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

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

7-
require github.com/redis/go-redis/v9 v9.18.0-beta.2
7+
require github.com/redis/go-redis/v9 v9.18.0
88

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

example/hll/go.mod

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

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

7-
require github.com/redis/go-redis/v9 v9.18.0-beta.2
7+
require github.com/redis/go-redis/v9 v9.18.0
88

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

example/hset-struct/go.mod

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

77
require (
88
github.com/davecgh/go-spew v1.1.1
9-
github.com/redis/go-redis/v9 v9.18.0-beta.2
9+
github.com/redis/go-redis/v9 v9.18.0
1010
)
1111

1212
require (

example/lua-scripting/go.mod

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

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

7-
require github.com/redis/go-redis/v9 v9.18.0-beta.2
7+
require github.com/redis/go-redis/v9 v9.18.0
88

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

example/otel/go.mod

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

1313
require (
14-
github.com/redis/go-redis/extra/redisotel/v9 v9.18.0-beta.2
15-
github.com/redis/go-redis/v9 v9.18.0-beta.2
14+
github.com/redis/go-redis/extra/redisotel/v9 v9.18.0
15+
github.com/redis/go-redis/v9 v9.18.0
1616
github.com/uptrace/uptrace-go v1.21.0
1717
go.opentelemetry.io/otel v1.22.0
1818
)
@@ -25,7 +25,7 @@ require (
2525
github.com/go-logr/stdr v1.2.2 // indirect
2626
github.com/golang/protobuf v1.5.3 // indirect
2727
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
28-
github.com/redis/go-redis/extra/rediscmd/v9 v9.18.0-beta.2 // indirect
28+
github.com/redis/go-redis/extra/rediscmd/v9 v9.18.0 // indirect
2929
go.opentelemetry.io/contrib/instrumentation/runtime v0.46.1 // indirect
3030
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 // indirect
3131
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.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.21
44

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

7-
require github.com/redis/go-redis/v9 v9.18.0-beta.2
7+
require github.com/redis/go-redis/v9 v9.18.0
88

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

example/scan-struct/go.mod

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

77
require (
88
github.com/davecgh/go-spew v1.1.1
9-
github.com/redis/go-redis/v9 v9.18.0-beta.2
9+
github.com/redis/go-redis/v9 v9.18.0
1010
)
1111

1212
require (

example/tls-cert-auth/go.mod

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

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

7-
require github.com/redis/go-redis/v9 v9.18.0-beta.2
7+
require github.com/redis/go-redis/v9 v9.18.0
88

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

0 commit comments

Comments
 (0)