Skip to content

Commit 03b1809

Browse files
chore(deps): update module github.com/redis/go-redis/extra/redisotel/v9 to v9.19.0 (8.19) (#6105)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/redis/go-redis/extra/redisotel/v9](https://redirect.github.com/redis/go-redis) | indirect | minor | `v9.5.3` -> `v9.19.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>redis/go-redis (github.com/redis/go-redis/extra/redisotel/v9)</summary> ### [`v9.19.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.19.0): 9.19.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.18.0...v9.19.0) #### 🚀 Highlights ##### FIPS-Compatible Script Helper `Script` now supports a FIPS-safe execution mode that avoids client-side SHA-1 computation, which is blocked in strict FIPS environments. A new `NewScriptServerSHA` constructor uses `SCRIPT LOAD` to obtain and cache the digest from the server, then runs commands via `EVALSHA`/`EVALSHA_RO`. Falls back to `EVAL`/`EVALRO` if loading fails, and transparently retries once on `NOSCRIPT`. The default behavior is unchanged for existing users. ([#&#8203;3700](https://redirect.github.com/redis/go-redis/pull/3700)) by [@&#8203;chaitanyabodlapati](https://redirect.github.com/chaitanyabodlapati) ##### FT.AGGREGATE Step-Based Pipeline Builder Added a new step-based `FT.AGGREGATE` pipeline API via `FTAggregateOptions.Steps`, allowing `LOAD`, `APPLY`, `GROUPBY`, and `SORTBY` (with per-step `MAX`) to be repeated and interleaved in arbitrary order — matching Redis's native multi-stage aggregation semantics. The legacy `Load`/`Apply`/`GroupBy`/`SortBy`/`SortByMax` fields are now deprecated. ([#&#8203;3782](https://redirect.github.com/redis/go-redis/pull/3782)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) ##### Raw RESP Protocol Access Added `DoRaw` and `DoRawWriteTo` methods for executing arbitrary commands and reading the raw RESP response. Useful for proxying, custom protocol inspection, and working with commands not yet wrapped by go-redis. ([#&#8203;3713](https://redirect.github.com/redis/go-redis/pull/3713)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) ##### Configurable Dial Retry Backoff Added `DialerRetryBackoff` option (plumbed through `Options`, `ClusterOptions`, `RingOptions`, `FailoverOptions`) to let callers customize the delay between failed dial attempts. Helpers `DialRetryBackoffConstant` and `DialRetryBackoffExponential` (with jitter and cap) are provided out of the box. Dial timeout is now also applied **per attempt** rather than across all retries. ([#&#8203;3706](https://redirect.github.com/redis/go-redis/pull/3706), [#&#8203;3705](https://redirect.github.com/redis/go-redis/pull/3705)) by [@&#8203;mwhooker](https://redirect.github.com/mwhooker) #### ✨ New Features - **FT.AGGREGATE Steps**: Step-based pipeline builder for `FT.AGGREGATE` with support for repeated/interleaved `LOAD`, `APPLY`, `GROUPBY`, and `SORTBY` stages ([#&#8203;3782](https://redirect.github.com/redis/go-redis/pull/3782)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **VectorSet commands**: Added `VISMEMBER` and `WITHATTRIBS` support ([#&#8203;3753](https://redirect.github.com/redis/go-redis/pull/3753)) by [@&#8203;romanpovol](https://redirect.github.com/romanpovol) - **FIPS-safe Script**: `NewScriptServerSHA` uses `SCRIPT LOAD` to obtain the digest from the server, avoiding client-side SHA-1 ([#&#8203;3700](https://redirect.github.com/redis/go-redis/pull/3700)) by [@&#8203;chaitanyabodlapati](https://redirect.github.com/chaitanyabodlapati) - **Raw RESP access**: `DoRaw` and `DoRawWriteTo` for raw RESP protocol access ([#&#8203;3713](https://redirect.github.com/redis/go-redis/pull/3713)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **Dial retry backoff**: `DialerRetryBackoff` function option with constant and exponential helpers ([#&#8203;3706](https://redirect.github.com/redis/go-redis/pull/3706)) by [@&#8203;mwhooker](https://redirect.github.com/mwhooker) - **Typed NOSCRIPT error**: Redis `NOSCRIPT` replies are now surfaced as a typed error for easier handling ([#&#8203;3738](https://redirect.github.com/redis/go-redis/pull/3738)) by [@&#8203;LINKIWI](https://redirect.github.com/LINKIWI) - **PubSub ClientSetName**: Added `ClientSetName` method to `PubSub` ([#&#8203;3727](https://redirect.github.com/redis/go-redis/pull/3727)) by [@&#8203;Flack74](https://redirect.github.com/Flack74) - **ReplicaOf**: New `ReplicaOf` method replaces the deprecated `SlaveOf` ([#&#8203;3720](https://redirect.github.com/redis/go-redis/pull/3720)) by [@&#8203;Copilot](https://redirect.github.com/apps/copilot-swe-agent) - **HSCAN BinaryUnmarshaler**: `HScan` now supports types implementing `encoding.BinaryUnmarshaler` ([#&#8203;3768](https://redirect.github.com/redis/go-redis/pull/3768)) by [@&#8203;Aaditya-dubey1](https://redirect.github.com/Aaditya-dubey1) #### 🐛 Bug Fixes - **Auto hostname type detection**: Improved endpoint type detection for maintenance notifications using DNS-based classification; handles empty hosts and expanded private-IP ranges ([#&#8203;3789](https://redirect.github.com/redis/go-redis/pull/3789)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **HELLO fallback**: Don't send `CLIENT MAINT_NOTIFICATIONS` handshake when `HELLO` fails and connection falls back to RESP2; fail fast when explicitly enabled with RESP3 ([#&#8203;3788](https://redirect.github.com/redis/go-redis/pull/3788)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Dial TCP retry**: `ShouldRetry` now treats `net.OpError` with `Op == "dial"` timeout errors as safe to retry since no command was sent ([#&#8203;3787](https://redirect.github.com/redis/go-redis/pull/3787)) by [@&#8203;vladisa88](https://redirect.github.com/vladisa88) - **wrappedOnClose leak**: Fixed resource leak caused by repeatedly wrapping `baseClient` close logic; replaced with a bounded, concurrency-safe named-hook registry ([#&#8203;3785](https://redirect.github.com/redis/go-redis/pull/3785)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Pool Close() on stale connections**: Suppress close errors (e.g., TLS `closeNotify` timeouts) for connections already dropped by the server due to idle timeout ([#&#8203;3778](https://redirect.github.com/redis/go-redis/pull/3778)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **FIFO waiter ordering**: Fixed race in `ConnStateMachine.notifyWaiters` that could wake multiple waiters under a single mutex hold and violate FIFO ordering ([#&#8203;3777](https://redirect.github.com/redis/go-redis/pull/3777)) by [@&#8203;0x48core](https://redirect.github.com/0x48core) - **Lua READONLY detection**: Detect `READONLY` errors embedded in Lua script error messages on read-only replicas so commands are correctly retried ([#&#8203;3769](https://redirect.github.com/redis/go-redis/pull/3769)) by [@&#8203;zhengjilei](https://redirect.github.com/zhengjilei) - **VectorScoreSliceCmd RESP2**: Fixed `VSimWithScores`, `VSimWithArgsWithScores`, and `VLinksWithScores` which were broken on RESP2 connections returning flat arrays instead of maps ([#&#8203;3767](https://redirect.github.com/redis/go-redis/pull/3767)) by [@&#8203;Copilot](https://redirect.github.com/apps/copilot-swe-agent) - **Closed connection handling**: Two fixes for closed connection handling in the pool ([#&#8203;3764](https://redirect.github.com/redis/go-redis/pull/3764)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) - **ZRangeArgs Rev**: Fixed `ZRangeArgs` with `Rev` + `ByScore`/`ByLex` incorrectly swapping `Start`/`Stop`, breaking `ZRANGESTORE` ([#&#8203;3751](https://redirect.github.com/redis/go-redis/pull/3751)) by [@&#8203;Copilot](https://redirect.github.com/apps/copilot-swe-agent) - **OTel metric instrument types**: Fixed metric instrument types in `redisotel-native` ([#&#8203;3743](https://redirect.github.com/redis/go-redis/pull/3743)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **Options.clone() data race**: Fixed data race when cloning `Options` ([#&#8203;3739](https://redirect.github.com/redis/go-redis/pull/3739)) by [@&#8203;rubensayshi](https://redirect.github.com/rubensayshi) - **Connection closure metrics**: Fixed connection closure metrics and enabled all metric groups by default in `redisotel-native` ([#&#8203;3735](https://redirect.github.com/redis/go-redis/pull/3735)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **OTel semconv v1.38.0**: Use metric definition from `otel/semconv/v1.38.0` in `redisotel-native` ([#&#8203;3731](https://redirect.github.com/redis/go-redis/pull/3731)) by [@&#8203;wzy9607](https://redirect.github.com/wzy9607) - **SETNX semantics**: Use `SET ... NX` instead of the deprecated `SETNX` command ([#&#8203;3723](https://redirect.github.com/redis/go-redis/pull/3723)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **TIME keyless routing**: Mark `TIME` as a keyless command for correct cluster routing ([#&#8203;3722](https://redirect.github.com/redis/go-redis/pull/3722)) by [@&#8203;fatal10110](https://redirect.github.com/fatal10110) - **Dial timeout per retry**: Dial timeout now applies per attempt instead of across all retry attempts combined ([#&#8203;3705](https://redirect.github.com/redis/go-redis/pull/3705)) by [@&#8203;mwhooker](https://redirect.github.com/mwhooker) - **Cluster metrics attributes**: Fixed `pool.name` being appended per node, which corrupted and dropped user-provided custom attributes ([#&#8203;3699](https://redirect.github.com/redis/go-redis/pull/3699)) by [@&#8203;Jesse-Bonfire](https://redirect.github.com/Jesse-Bonfire) - **initConn nil dereference**: Fixed nil pointer dereference and potential deadlock in `*baseClient.initConn()`; added explicit nil option guards to client constructors ([#&#8203;3676](https://redirect.github.com/redis/go-redis/pull/3676)) by [@&#8203;olde-ducke](https://redirect.github.com/olde-ducke) #### ⚡ Performance - **RESP reader**: Optimized RESP reader by eliminating intermediate string allocations ([#&#8203;3774](https://redirect.github.com/redis/go-redis/pull/3774)) by [@&#8203;Aaditya-dubey1](https://redirect.github.com/Aaditya-dubey1) - **Inline rendezvous hashing**: Replaced `github.com/dgryski/go-rendezvous` dependency with an in-repo implementation in `internal/hashtag`, reducing the dependency graph while preserving algorithm parity ([#&#8203;3762](https://redirect.github.com/redis/go-redis/pull/3762)) by [@&#8203;bigsk05](https://redirect.github.com/bigsk05) #### 🧪 Testing & Infrastructure - **Release automation**: Added `repository`, `ref`, and `client-libs-test-image-tag` inputs to the `run-tests` composite action; `redis-version` is now optional so unstable builds use `REDIS_VERSION` from the Makefile ([#&#8203;3749](https://redirect.github.com/redis/go-redis/pull/3749)) by [@&#8203;dariaguy](https://redirect.github.com/dariaguy) - **Go 1.24**: Updated minimum Go version to 1.24 and use `-compat=1.24` in release scripts ([#&#8203;3714](https://redirect.github.com/redis/go-redis/pull/3714), [#&#8203;3754](https://redirect.github.com/redis/go-redis/pull/3754)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;cxljs](https://redirect.github.com/cxljs) #### 🧰 Maintenance - **Pool state machine**: Removed redundant `Conn.closed` atomic field in favor of the state machine's `StateClosed` ([#&#8203;3783](https://redirect.github.com/redis/go-redis/pull/3783)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) - **OTel SDK**: Updated OpenTelemetry SDK dependencies in `redisotel`/`redisotel-native` ([#&#8203;3770](https://redirect.github.com/redis/go-redis/pull/3770)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Go 1.21+ built-ins**: Use `maps.Keys`, `slices.Collect`, `slices.Contains`, `clear()`, and `slices.SortFunc` instead of custom helpers ([#&#8203;3758](https://redirect.github.com/redis/go-redis/pull/3758), [#&#8203;3746](https://redirect.github.com/redis/go-redis/pull/3746)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) - **HGetAll docs**: Added Go doc comment to `HGetAll` describing behavior and complexity ([#&#8203;3776](https://redirect.github.com/redis/go-redis/pull/3776)) by [@&#8203;0x48core](https://redirect.github.com/0x48core) - **Docs links**: Fixed irrelevant docs links ([#&#8203;3724](https://redirect.github.com/redis/go-redis/pull/3724)) by [@&#8203;olzhas-sabiyev](https://redirect.github.com/olzhas-sabiyev) - **Examples cleanup**: Removed throughput binary from examples ([#&#8203;3733](https://redirect.github.com/redis/go-redis/pull/3733)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) #### 👥 Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;0x48core](https://redirect.github.com/0x48core), [@&#8203;Aaditya-dubey1](https://redirect.github.com/Aaditya-dubey1), [@&#8203;Copilot](https://redirect.github.com/apps/copilot-swe-agent), [@&#8203;Flack74](https://redirect.github.com/Flack74), [@&#8203;Jesse-Bonfire](https://redirect.github.com/Jesse-Bonfire), [@&#8203;LINKIWI](https://redirect.github.com/LINKIWI), [@&#8203;bigsk05](https://redirect.github.com/bigsk05), [@&#8203;chaitanyabodlapati](https://redirect.github.com/chaitanyabodlapati), [@&#8203;cxljs](https://redirect.github.com/cxljs), [@&#8203;dariaguy](https://redirect.github.com/dariaguy), [@&#8203;fatal10110](https://redirect.github.com/fatal10110), [@&#8203;mwhooker](https://redirect.github.com/mwhooker), [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa), [@&#8203;olde-ducke](https://redirect.github.com/olde-ducke), [@&#8203;olzhas-sabiyev](https://redirect.github.com/olzhas-sabiyev), [@&#8203;romanpovol](https://redirect.github.com/romanpovol), [@&#8203;rubensayshi](https://redirect.github.com/rubensayshi), [@&#8203;vladisa88](https://redirect.github.com/vladisa88), [@&#8203;wzy9607](https://redirect.github.com/wzy9607), [@&#8203;zhengjilei](https://redirect.github.com/zhengjilei) *** **Full Changelog**: https://github.com/redis/go-redis/compare/v9.18.0...v9.19.0 ### [`v9.18.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.18.0): 9.18.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.17.3...v9.18.0) ##### Redis 8.6 Support Added support for Redis 8.6, including new commands and features for streams idempotent production and HOTKEYS. ##### Smart Client Handoff (Maintenance Notifications) for Cluster This release introduces comprehensive support for Redis Enterprise Cluster maintenance notifications via SMIGRATING/SMIGRATED push notifications. The client now automatically handles slot migrations by: - **Relaxing timeouts during migration** (SMIGRATING) to prevent false failures - **Triggering lazy cluster state reloads** upon completion (SMIGRATED) - Enabling seamless operations during Redis Enterprise maintenance windows ([#&#8203;3643](https://redirect.github.com/redis/go-redis/pull/3643)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) ##### OpenTelemetry Native Metrics Support 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. **Metric groups include:** - Command metrics: Operation duration with retry tracking - Connection basic: Connection count and creation time - Resiliency: Errors, handoffs, timeout relaxation - Connection advanced: Wait time and use time - Pubsub metrics: Published and received messages - Stream metrics: Processing duration and maintenance notifications ([#&#8203;3637](https://redirect.github.com/redis/go-redis/pull/3637)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) #### ✨ New Features - **HOTKEYS Commands**: Added support for Redis HOTKEYS feature for identifying hot keys based on CPU consumption and network utilization ([#&#8203;3695](https://redirect.github.com/redis/go-redis/pull/3695)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **Streams Idempotent Production**: Added support for Redis 8.6+ Streams Idempotent Production with `ProducerID`, `IdempotentID`, `IdempotentAuto` in `XAddArgs` and new `XCFGSET` command ([#&#8203;3693](https://redirect.github.com/redis/go-redis/pull/3693)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **NaN Values for TimeSeries**: Added support for NaN (Not a Number) values in Redis time series commands ([#&#8203;3687](https://redirect.github.com/redis/go-redis/pull/3687)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **DialerRetries Options**: Added `DialerRetries` and `DialerRetryTimeout` to `ClusterOptions`, `RingOptions`, and `FailoverOptions` ([#&#8203;3686](https://redirect.github.com/redis/go-redis/pull/3686)) by [@&#8203;naveenchander30](https://redirect.github.com/naveenchander30) - **ConnMaxLifetimeJitter**: Added jitter configuration to distribute connection expiration times and prevent thundering herd ([#&#8203;3666](https://redirect.github.com/redis/go-redis/pull/3666)) by [@&#8203;cyningsun](https://redirect.github.com/cyningsun) - **Digest Helper Functions**: Added `DigestString` and `DigestBytes` helper functions for client-side xxh3 hashing compatible with Redis DIGEST command ([#&#8203;3679](https://redirect.github.com/redis/go-redis/pull/3679)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - **SMIGRATED New Format**: Updated SMIGRATED parser to support new format and remember original host:port ([#&#8203;3697](https://redirect.github.com/redis/go-redis/pull/3697)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Cluster State Reload Interval**: Added cluster state reload interval option for maintenance notifications ([#&#8203;3663](https://redirect.github.com/redis/go-redis/pull/3663)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) #### 🐛 Bug Fixes - **PubSub nil pointer dereference**: Fixed nil pointer dereference in PubSub after `WithTimeout()` - `pubSubPool` is now properly cloned ([#&#8203;3710](https://redirect.github.com/redis/go-redis/pull/3710)) by [@&#8203;Copilot](https://redirect.github.com/apps/copilot-swe-agent) - **MaintNotificationsConfig nil check**: Guard against nil `MaintNotificationsConfig` in `initConn` ([#&#8203;3707](https://redirect.github.com/redis/go-redis/pull/3707)) by [@&#8203;veeceey](https://redirect.github.com/veeceey) - **wantConnQueue zombie elements**: Fixed zombie `wantConn` elements accumulation in `wantConnQueue` ([#&#8203;3680](https://redirect.github.com/redis/go-redis/pull/3680)) by [@&#8203;cyningsun](https://redirect.github.com/cyningsun) - **XADD/XTRIM approx flag**: Fixed XADD and XTRIM to use `=` when approx is false ([#&#8203;3684](https://redirect.github.com/redis/go-redis/pull/3684)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Sentinel timeout retry**: When connection to a sentinel times out, attempt to connect to other sentinels ([#&#8203;3654](https://redirect.github.com/redis/go-redis/pull/3654)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) #### ⚡ Performance - **Fuzz test optimization**: Eliminated repeated string conversions, used functional approach for cleaner operation selection ([#&#8203;3692](https://redirect.github.com/redis/go-redis/pull/3692)) by [@&#8203;feiguoL](https://redirect.github.com/feiguoL) - **Pre-allocate capacity**: Pre-allocate slice capacity to prevent multiple capacity expansions ([#&#8203;3689](https://redirect.github.com/redis/go-redis/pull/3689)) by [@&#8203;feelshu](https://redirect.github.com/feelshu) #### 🧪 Testing - **Comprehensive TLS tests**: Added comprehensive TLS tests and example for standalone, cluster, and certificate authentication ([#&#8203;3681](https://redirect.github.com/redis/go-redis/pull/3681)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Redis 8.6**: Updated CI to use Redis 8.6-pre ([#&#8203;3685](https://redirect.github.com/redis/go-redis/pull/3685)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) #### 🧰 Maintenance - **Deprecation warnings**: Added deprecation warnings for commands based on Redis documentation ([#&#8203;3673](https://redirect.github.com/redis/go-redis/pull/3673)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Use errors.Join()**: Replaced custom error join function with standard library `errors.Join()` ([#&#8203;3653](https://redirect.github.com/redis/go-redis/pull/3653)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) - **Use Go 1.21 min/max**: Use Go 1.21's built-in min/max functions ([#&#8203;3656](https://redirect.github.com/redis/go-redis/pull/3656)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) - **Proper formatting**: Code formatting improvements ([#&#8203;3670](https://redirect.github.com/redis/go-redis/pull/3670)) by [@&#8203;12ya](https://redirect.github.com/12ya) - **Set commands documentation**: Added comprehensive documentation to all set command methods ([#&#8203;3642](https://redirect.github.com/redis/go-redis/pull/3642)) by [@&#8203;iamamirsalehi](https://redirect.github.com/iamamirsalehi) - **MaxActiveConns docs**: Added default value documentation for `MaxActiveConns` ([#&#8203;3674](https://redirect.github.com/redis/go-redis/pull/3674)) by [@&#8203;codykaup](https://redirect.github.com/codykaup) - **README example update**: Updated README example ([#&#8203;3657](https://redirect.github.com/redis/go-redis/pull/3657)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) - **Cluster maintnotif example**: Added example application for cluster maintenance notifications ([#&#8203;3651](https://redirect.github.com/redis/go-redis/pull/3651)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) #### 👥 Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;12ya](https://redirect.github.com/12ya), [@&#8203;Copilot](https://redirect.github.com/apps/copilot-swe-agent), [@&#8203;codykaup](https://redirect.github.com/codykaup), [@&#8203;cxljs](https://redirect.github.com/cxljs), [@&#8203;cyningsun](https://redirect.github.com/cyningsun), [@&#8203;feelshu](https://redirect.github.com/feelshu), [@&#8203;feiguoL](https://redirect.github.com/feiguoL), [@&#8203;iamamirsalehi](https://redirect.github.com/iamamirsalehi), [@&#8203;naveenchander30](https://redirect.github.com/naveenchander30), [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa), [@&#8203;veeceey](https://redirect.github.com/veeceey) ### [`v9.17.3`](https://redirect.github.com/redis/go-redis/releases/tag/v9.17.3): 9.17.3 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.17.2...v9.17.3) #### 🐛 Bug Fixes - **Connection Pool**: Fixed zombie `wantConn` elements accumulation in `wantConnQueue` that could cause resource leaks in high concurrency scenarios with dial failures ([#&#8203;3680](https://redirect.github.com/redis/go-redis/pull/3680)) by [@&#8203;cyningsun](https://redirect.github.com/cyningsun) - **Stream Commands**: Fixed `XADD` and `XTRIM` commands to use exact threshold (`=`) when `Approx` is false, ensuring precise stream trimming behavior ([#&#8203;3684](https://redirect.github.com/redis/go-redis/pull/3684)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - **Connection Pool**: Added `ConnMaxLifetimeJitter` configuration to distribute connection expiration times and prevent the thundering herd problem when many connections expire simultaneously ([#&#8203;3666](https://redirect.github.com/redis/go-redis/pull/3666)) by [@&#8203;cyningsun](https://redirect.github.com/cyningsun) - **Client Options**: Added `DialerRetries` and `DialerRetryTimeout` fields to `ClusterOptions`, `RingOptions`, and `FailoverOptions` to allow configuring connection retry behavior for cluster, ring, and sentinel clients ([#&#8203;3686](https://redirect.github.com/redis/go-redis/pull/3686)) by [@&#8203;naveenchander30](https://redirect.github.com/naveenchander30) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;cyningsun](https://redirect.github.com/cyningsun), [@&#8203;naveenchander30](https://redirect.github.com/naveenchander30), and [@&#8203;ndyakov](https://redirect.github.com/ndyakov) *** **Full Changelog**: https://github.com/redis/go-redis/compare/v9.17.2...v9.17.3 ### [`v9.17.2`](https://redirect.github.com/redis/go-redis/releases/tag/v9.17.2): 9.17.2 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.17.1...v9.17.2) #### 🐛 Bug Fixes - **Connection Pool**: Fixed critical race condition in turn management that could cause connection leaks when dial goroutines complete after request timeout ([#&#8203;3626](https://redirect.github.com/redis/go-redis/pull/3626)) by [@&#8203;cyningsun](https://redirect.github.com/cyningsun) - **Context Timeout**: Improved context timeout calculation to use minimum of remaining time and DialTimeout, preventing goroutines from waiting longer than necessary ([#&#8203;3626](https://redirect.github.com/redis/go-redis/pull/3626)) by [@&#8203;cyningsun](https://redirect.github.com/cyningsun) #### 🧰 Maintenance - chore(deps): bump rojopolis/spellcheck-github-actions from 0.54.0 to 0.55.0 ([#&#8203;3627](https://redirect.github.com/redis/go-redis/pull/3627)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;cyningsun](https://redirect.github.com/cyningsun) and [@&#8203;ndyakov](https://redirect.github.com/ndyakov) ### [`v9.17.1`](https://redirect.github.com/redis/go-redis/releases/tag/v9.17.1): 9.17.1 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.17.0...v9.17.1) #### 🐛 Bug Fixes - add wait to keyless commands list ([#&#8203;3615](https://redirect.github.com/redis/go-redis/pull/3615)) by [@&#8203;marcoferrer](https://redirect.github.com/marcoferrer) - fix(time): remove cached time optimization ([#&#8203;3611](https://redirect.github.com/redis/go-redis/pull/3611)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) #### 🧰 Maintenance - chore(deps): bump golangci/golangci-lint-action from 9.0.0 to 9.1.0 ([#&#8203;3609](https://redirect.github.com/redis/go-redis/pull/3609)) - chore(deps): bump actions/checkout from 5 to 6 ([#&#8203;3610](https://redirect.github.com/redis/go-redis/pull/3610)) - chore(script): fix help call in tag.sh ([#&#8203;3606](https://redirect.github.com/redis/go-redis/pull/3606)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;marcoferrer](https://redirect.github.com/marcoferrer) and [@&#8203;ndyakov](https://redirect.github.com/ndyakov) ### [`v9.17.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.17.0): 9.17.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.16.0...v9.17.0) #### 🚀 Highlights ##### Redis 8.4 Support Added support for Redis 8.4, including new commands and features ([#&#8203;3572](https://redirect.github.com/redis/go-redis/pull/3572)) ##### Typed Errors Introduced typed errors for better error handling using `errors.As` instead of string checks. Errors can now be wrapped and set to commands in hooks without breaking library functionality ([#&#8203;3602](https://redirect.github.com/redis/go-redis/pull/3602)) ##### New Commands - **CAS/CAD Commands**: Added support for Compare-And-Set/Compare-And-Delete operations with conditional matching (`IFEQ`, `IFNE`, `IFDEQ`, `IFDNE`) ([#&#8203;3583](https://redirect.github.com/redis/go-redis/pull/3583), [#&#8203;3595](https://redirect.github.com/redis/go-redis/pull/3595)) - **MSETEX**: Atomically set multiple key-value pairs with expiration options and conditional modes ([#&#8203;3580](https://redirect.github.com/redis/go-redis/pull/3580)) - **XReadGroup CLAIM**: Consume both incoming and idle pending entries from streams in a single call ([#&#8203;3578](https://redirect.github.com/redis/go-redis/pull/3578)) - **ACL Commands**: Added `ACLGenPass`, `ACLUsers`, and `ACLWhoAmI` ([#&#8203;3576](https://redirect.github.com/redis/go-redis/pull/3576)) - **SLOWLOG Commands**: Added `SLOWLOG LEN` and `SLOWLOG RESET` ([#&#8203;3585](https://redirect.github.com/redis/go-redis/pull/3585)) - **LATENCY Commands**: Added `LATENCY LATEST` and `LATENCY RESET` ([#&#8203;3584](https://redirect.github.com/redis/go-redis/pull/3584)) ##### Search & Vector Improvements - **Hybrid Search**: Added **EXPERIMENTAL** support for the new `FT.HYBRID` command ([#&#8203;3573](https://redirect.github.com/redis/go-redis/pull/3573)) - **Vector Range**: Added `VRANGE` command for vector sets ([#&#8203;3543](https://redirect.github.com/redis/go-redis/pull/3543)) - **FT.INFO Enhancements**: Added vector-specific attributes in FT.INFO response ([#&#8203;3596](https://redirect.github.com/redis/go-redis/pull/3596)) ##### Connection Pool Improvements - **Improved Connection Success Rate**: Implemented FIFO queue-based fairness and context pattern for connection creation to prevent premature cancellation under high concurrency ([#&#8203;3518](https://redirect.github.com/redis/go-redis/pull/3518)) - **Connection State Machine**: Resolved race conditions and improved pool performance with proper state tracking ([#&#8203;3559](https://redirect.github.com/redis/go-redis/pull/3559)) - **Pool Performance**: Significant performance improvements with faster semaphores, lockless hook manager, and reduced allocations (47-67% faster Get/Put operations) ([#&#8203;3565](https://redirect.github.com/redis/go-redis/pull/3565)) ##### Metrics & Observability - **Canceled Metric Attribute**: Added 'canceled' metrics attribute to distinguish context cancellation errors from other errors ([#&#8203;3566](https://redirect.github.com/redis/go-redis/pull/3566)) #### ✨ New Features - Typed errors with wrapping support ([#&#8203;3602](https://redirect.github.com/redis/go-redis/pull/3602)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - CAS/CAD commands (marked as experimental) ([#&#8203;3583](https://redirect.github.com/redis/go-redis/pull/3583), [#&#8203;3595](https://redirect.github.com/redis/go-redis/pull/3595)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis) - MSETEX command support ([#&#8203;3580](https://redirect.github.com/redis/go-redis/pull/3580)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - XReadGroup CLAIM argument ([#&#8203;3578](https://redirect.github.com/redis/go-redis/pull/3578)) by [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa) - ACL commands: GenPass, Users, WhoAmI ([#&#8203;3576](https://redirect.github.com/redis/go-redis/pull/3576)) by [@&#8203;destinyoooo](https://redirect.github.com/destinyoooo) - SLOWLOG commands: LEN, RESET ([#&#8203;3585](https://redirect.github.com/redis/go-redis/pull/3585)) by [@&#8203;destinyoooo](https://redirect.github.com/destinyoooo) - LATENCY commands: LATEST, RESET ([#&#8203;3584](https://redirect.github.com/redis/go-redis/pull/3584)) by [@&#8203;destinyoooo](https://redirect.github.com/destinyoooo) - Hybrid search command (FT.HYBRID) ([#&#8203;3573](https://redirect.github.com/redis/go-redis/pull/3573)) by [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis) - Vector range command (VRANGE) ([#&#8203;3543](https://redirect.github.com/redis/go-redis/pull/3543)) by [@&#8203;cxljs](https://redirect.github.com/cxljs) - Vector-specific attributes in FT.INFO ([#&#8203;3596](https://redirect.github.com/redis/go-redis/pull/3596)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - Improved connection pool success rate with FIFO queue ([#&#8203;3518](https://redirect.github.com/redis/go-redis/pull/3518)) by [@&#8203;cyningsun](https://redirect.github.com/cyningsun) - Canceled metrics attribute for context errors ([#&#8203;3566](https://redirect.github.com/redis/go-redis/pull/3566)) by [@&#8203;pvragov](https://redirect.github.com/pvragov) #### 🐛 Bug Fixes - Fixed Failover Client MaintNotificationsConfig ([#&#8203;3600](https://redirect.github.com/redis/go-redis/pull/3600)) by [@&#8203;ajax16384](https://redirect.github.com/ajax16384) - Fixed ACLGenPass function to use the bit parameter ([#&#8203;3597](https://redirect.github.com/redis/go-redis/pull/3597)) by [@&#8203;destinyoooo](https://redirect.github.com/destinyoooo) - Return error instead of panic from commands ([#&#8203;3568](https://redirect.github.com/redis/go-redis/pull/3568)) by [@&#8203;dragneelfps](https://redirect.github.com/dragneelfps) - Safety harness in `joinErrors` to prevent panic ([#&#8203;3577](https://redirect.github.com/redis/go-redis/pull/3577)) by [@&#8203;manisharma](https://redirect.github.com/manisharma) #### ⚡ Performance - Connection state machine with race condition fixes ([#&#8203;3559](https://redirect.github.com/redis/go-redis/pull/3559)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - Pool performance improvements: 47-67% faster Get/Put, 33% less memory, 50% fewer allocations ([#&#8203;3565](https://redirect.github.com/redis/go-redis/pull/3565)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) #### 🧪 Testing & Infrastructure - Updated to Redis 8.4.0 image ([#&#8203;3603](https://redirect.github.com/redis/go-redis/pull/3603)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - Added Redis 8.4-RC1-pre to CI ([#&#8203;3572](https://redirect.github.com/redis/go-redis/pull/3572)) by [@&#8203;ndyakov](https://redirect.github.com/ndyakov) - Refactored tests for idiomatic Go ([#&#8203;3561](https://redirect.github.com/redis/go-redis/pull/3561), [#&#8203;3562](https://redirect.github.com/redis/go-redis/pull/3562), [#&#8203;3563](https://redirect.github.com/redis/go-redis/pull/3563)) by [@&#8203;12ya](https://redirect.github.com/12ya) #### 👥 Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;12ya](https://redirect.github.com/12ya), [@&#8203;ajax16384](https://redirect.github.com/ajax16384), [@&#8203;cxljs](https://redirect.github.com/cxljs), [@&#8203;cyningsun](https://redirect.github.com/cyningsun), [@&#8203;destinyoooo](https://redirect.github.com/destinyoooo), [@&#8203;dragneelfps](https://redirect.github.com/dragneelfps), [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis), [@&#8203;manisharma](https://redirect.github.com/manisharma), [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa), [@&#8203;pvragov](https://redirect.github.com/pvragov) *** **Full Changelog**: https://github.com/redis/go-redis/compare/v9.16.0...v9.17.0 ### [`v9.16.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.16.0): 9.16.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.15.1...v9.16.0) #### 🚀 Highlights ##### Maintenance Notifications Support This release introduces comprehensive support for Redis maintenance notifications, enabling applications to handle server maintenance events gracefully. The new `maintnotifications` package provides: - **RESP3 Push Notifications**: Full support for Redis RESP3 protocol push notifications - **Connection Handoff**: Automatic connection migration during server maintenance with configurable retry policies and circuit breakers - **Graceful Degradation**: Configurable timeout relaxation during maintenance windows to prevent false failures - **Event-Driven Architecture**: Background workers with on-demand scaling for efficient handoff processing For detailed usage examples and configuration options, see the [maintenance notifications documentation](https://redirect.github.com/redis/go-redis/tree/master/maintnotifications). #### ✨ New Features - **Trace Filtering**: Add support for filtering traces for specific commands, including pipeline operations and dial operations ([#&#8203;3519](https://redirect.github.com/redis/go-redis/pull/3519), [#&#8203;3550](https://redirect.github.com/redis/go-redis/pull/3550)) - New `TraceCmdFilter` option to selectively trace commands - Reduces overhead by excluding high-frequency or low-value commands from traces #### 🐛 Bug Fixes - **Pipeline Error Handling**: Fix issue where pipeline repeatedly sets the same error ([#&#8203;3525](https://redirect.github.com/redis/go-redis/pull/3525)) - **Connection Pool**: Ensure re-authentication does not interfere with connection handoff operations ([#&#8203;3547](https://redirect.github.com/redis/go-redis/pull/3547)) #### 🔧 Improvements - **Hash Commands**: Update hash command implementations ([#&#8203;3523](https://redirect.github.com/redis/go-redis/pull/3523)) - **OpenTelemetry**: Use `metric.WithAttributeSet` to avoid unnecessary attribute copying in redisotel ([#&#8203;3552](https://redirect.github.com/redis/go-redis/pull/3552)) #### 📚 Documentation - **Cluster Client**: Add explanation for why `MaxRetries` is disabled for `ClusterClient` ([#&#8203;3551](https://redirect.github.com/redis/go-redis/pull/3551)) #### 🧪 Testing & Infrastructure - **E2E Testing**: Upgrade E2E testing framework with improved reliability and coverage ([#&#8203;3541](https://redirect.github.com/redis/go-redis/pull/3541)) - **Release Process**: Improved resiliency of the release process ([#&#8203;3530](https://redirect.github.com/redis/go-redis/pull/3530)) #### 📦 Dependencies - Bump `rojopolis/spellcheck-github-actions` from 0.51.0 to 0.52.0 ([#&#8203;3520](https://redirect.github.com/redis/go-redis/pull/3520)) - Bump `github/codeql-action` from 3 to 4 ([#&#8203;3544](https://redirect.github.com/redis/go-redis/pull/3544)) #### 👥 Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis), [@&#8203;Sovietaced](https://redirect.github.com/Sovietaced), [@&#8203;Udhayarajan](https://redirect.github.com/Udhayarajan), [@&#8203;boekkooi-impossiblecloud](https://redirect.github.com/boekkooi-impossiblecloud), [@&#8203;Pika-Gopher](https://redirect.github.com/Pika-Gopher), [@&#8203;cxljs](https://redirect.github.com/cxljs), [@&#8203;huiyifyj](https://redirect.github.com/huiyifyj), [@&#8203;omid-h70](https://redirect.github.com/omid-h70) *** **Full Changelog**: https://github.com/redis/go-redis/compare/v9.14.0...v9.16.0 ### [`v9.15.1`](https://redirect.github.com/redis/go-redis/releases/tag/v9.15.1): Retract v9.15.0 and v9.15.1 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.14.1...v9.15.1) ### [`v9.14.1`](https://redirect.github.com/redis/go-redis/releases/tag/v9.14.1): 9.14.1 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.14.0...v9.14.1) #### Changes - fix(otel): Add support for filtering traces for certain commands ([#&#8203;3519](https://redirect.github.com/redis/go-redis/pull/3519)) - fix(pool): remove conn from idleConns if present ([#&#8203;3546](https://redirect.github.com/redis/go-redis/pull/3546)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;Sovietaced](https://redirect.github.com/Sovietaced), [@&#8203;ndyakov](https://redirect.github.com/ndyakov) ### [`v9.14.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.14.0): 9.14.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.13.0...v9.14.0) #### Highlights - Added batch process method to the pipeline ([#&#8203;3510](https://redirect.github.com/redis/go-redis/pull/3510)) ### Changes #### 🚀 New Features - Added batch process method to the pipeline ([#&#8203;3510](https://redirect.github.com/redis/go-redis/pull/3510)) #### 🐛 Bug Fixes - fix: SetErr on Cmd if the command cannot be queued correctly in multi/exec ([#&#8203;3509](https://redirect.github.com/redis/go-redis/pull/3509)) #### 🧰 Maintenance - Updates release drafter config to exclude dependabot ([#&#8203;3511](https://redirect.github.com/redis/go-redis/pull/3511)) - chore(deps): bump actions/setup-go from 5 to 6 ([#&#8203;3504](https://redirect.github.com/redis/go-redis/pull/3504)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;elena-kolevska](https://redirect.github.com/elena-kolevksa), [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis) and [@&#8203;ndyakov](https://redirect.github.com/ndyakov) ### [`v9.13.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.13.0): 9.13.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.12.1...v9.13.0) #### Highlights - Pipeliner expose queued commands ([#&#8203;3496](https://redirect.github.com/redis/go-redis/pull/3496)) - Ensure that JSON.GET returns Nil response ([#&#8203;3470](https://redirect.github.com/redis/go-redis/pull/3470)) - Fixes on Read and Write buffer sizes and UniversalOptions #### Changes - Pipeliner expose queued commands ([#&#8203;3496](https://redirect.github.com/redis/go-redis/pull/3496)) - fix(test): fix a timing issue in pubsub test ([#&#8203;3498](https://redirect.github.com/redis/go-redis/pull/3498)) - Allow users to enable read-write splitting in failover mode. ([#&#8203;3482](https://redirect.github.com/redis/go-redis/pull/3482)) - Set the read/write buffer size of the sentinel client to 4KiB ([#&#8203;3476](https://redirect.github.com/redis/go-redis/pull/3476)) #### 🚀 New Features - fix(otel): register wait metrics ([#&#8203;3499](https://redirect.github.com/redis/go-redis/pull/3499)) - Support subscriptions against cluster slave nodes ([#&#8203;3480](https://redirect.github.com/redis/go-redis/pull/3480)) - Add wait metrics to otel ([#&#8203;3493](https://redirect.github.com/redis/go-redis/pull/3493)) - Clean failing timeout implementation ([#&#8203;3472](https://redirect.github.com/redis/go-redis/pull/3472)) #### 🐛 Bug Fixes - Do not assume that all non-IP hosts are loopbacks ([#&#8203;3085](https://redirect.github.com/redis/go-redis/pull/3085)) - Ensure that JSON.GET returns Nil response ([#&#8203;3470](https://redirect.github.com/redis/go-redis/pull/3470)) #### 🧰 Maintenance - fix(otel): register wait metrics ([#&#8203;3499](https://redirect.github.com/redis/go-redis/pull/3499)) - fix(make test): Add default env in makefile ([#&#8203;3491](https://redirect.github.com/redis/go-redis/pull/3491)) - Update the introduction to running tests in README.md ([#&#8203;3495](https://redirect.github.com/redis/go-redis/pull/3495)) - test: Add comprehensive edge case tests for IncrByFloat command ([#&#8203;3477](https://redirect.github.com/redis/go-redis/pull/3477)) - Set the default read/write buffer size of Redis connection to 32KiB ([#&#8203;3483](https://redirect.github.com/redis/go-redis/pull/3483)) - Bumps test image to 8.2.1-pre ([#&#8203;3478](https://redirect.github.com/redis/go-redis/pull/3478)) - fix UniversalOptions miss ReadBufferSize and WriteBufferSize options ([#&#8203;3485](https://redirect.github.com/redis/go-redis/pull/3485)) - chore(deps): bump actions/checkout from 4 to 5 ([#&#8203;3484](https://redirect.github.com/redis/go-redis/pull/3484)) - Removes dry run for stale issues policy ([#&#8203;3471](https://redirect.github.com/redis/go-redis/pull/3471)) - Update otel metrics URL ([#&#8203;3474](https://redirect.github.com/redis/go-redis/pull/3474)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;LINKIWI](https://redirect.github.com/LINKIWI), [@&#8203;cxljs](https://redirect.github.com/cxljs), [@&#8203;cybersmeashish](https://redirect.github.com/cybersmeashish), [@&#8203;elena-kolevska](https://redirect.github.com/elena-kolevska), [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis), [@&#8203;mwhooker](https://redirect.github.com/mwhooker), [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa), [@&#8203;suever](https://redirect.github.com/suever) ### [`v9.12.1`](https://redirect.github.com/redis/go-redis/releases/tag/v9.12.1): 9.12.1 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.12.0...v9.12.1) #### 🚀 Highlights In the last version (9.12.0) the client introduced bigger write and read buffer sizes. The default value was 512KiB. However, users reported that this is too big for most use cases and can lead to high memory usage. In this version the default value is changed to 256KiB. The `README.md` was updated to reflect the correct default value and include a note that the default value can be changed. #### 🐛 Bug Fixes - fix(options): Add buffer sizes to failover. Update README ([#&#8203;3468](https://redirect.github.com/redis/go-redis/pull/3468)) #### 🧰 Maintenance - fix(options): Add buffer sizes to failover. Update README ([#&#8203;3468](https://redirect.github.com/redis/go-redis/pull/3468)) - chore: update & fix otel example ([#&#8203;3466](https://redirect.github.com/redis/go-redis/pull/3466)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;ndyakov](https://redirect.github.com/ndyakov) and [@&#8203;vmihailenco](https://redirect.github.com/vmihailenco) ### [`v9.12.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.12.0): 9.12.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.11.0...v9.12.0) #### 🚀 Highlights - This release includes support for [Redis 8.2](https://redis.io/docs/latest/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.2-release-notes/). - Introduces an experimental Query Builders for `FTSearch`, `FTAggregate` and other search commands. - Adds support for `EPSILON` option in `FT.VSIM`. - Includes bug fixes and improvements contributed by the community related to ring and [redisotel](https://redirect.github.com/redis/go-redis/tree/master/extra/redisotel). #### Changes - Improve stale issue workflow ([#&#8203;3458](https://redirect.github.com/redis/go-redis/pull/3458)) - chore(ci): Add 8.2 rc2 pre build for CI ([#&#8203;3459](https://redirect.github.com/redis/go-redis/pull/3459)) - Added new stream commands ([#&#8203;3450](https://redirect.github.com/redis/go-redis/pull/3450)) - feat: Add "skip_verify" to Sentinel ([#&#8203;3428](https://redirect.github.com/redis/go-redis/pull/3428)) - fix: `errors.Join` requires Go 1.20 or later ([#&#8203;3442](https://redirect.github.com/redis/go-redis/pull/3442)) - DOC-4344 document quickstart examples ([#&#8203;3426](https://redirect.github.com/redis/go-redis/pull/3426)) - feat(bitop): add support for the new bitop operations ([#&#8203;3409](https://redirect.github.com/redis/go-redis/pull/3409)) #### 🚀 New Features - feat: recover addIdleConn may occur panic ([#&#8203;2445](https://redirect.github.com/redis/go-redis/pull/2445)) - feat(ring): specify custom health check func via HeartbeatFn option ([#&#8203;2940](https://redirect.github.com/redis/go-redis/pull/2940)) - Add Query Builder for RediSearch commands ([#&#8203;3436](https://redirect.github.com/redis/go-redis/pull/3436)) - add configurable buffer sizes for Redis connections ([#&#8203;3453](https://redirect.github.com/redis/go-redis/pull/3453)) - Add VAMANA vector type to RediSearch ([#&#8203;3449](https://redirect.github.com/redis/go-redis/pull/3449)) - VSIM add `EPSILON` option ([#&#8203;3454](https://redirect.github.com/redis/go-redis/pull/3454)) - Add closing support to otel metrics instrumentation ([#&#8203;3444](https://redirect.github.com/redis/go-redis/pull/3444)) #### 🐛 Bug Fixes - fix(redisotel): fix buggy append in reportPoolStats ([#&#8203;3122](https://redirect.github.com/redis/go-redis/pull/3122)) - fix(search): return results even if doc is empty ([#&#8203;3457](https://redirect.github.com/redis/go-redis/pull/3457)) - \[ISSUE-3402]: Ring.Pipelined return dial timeout error ([#&#8203;3403](https://redirect.github.com/redis/go-redis/pull/3403)) #### 🧰 Maintenance - Merges stale issues jobs into one job with two steps ([#&#8203;3463](https://redirect.github.com/redis/go-redis/pull/3463)) - improve code readability ([#&#8203;3446](https://redirect.github.com/redis/go-redis/pull/3446)) - chore(release): 9.12.0-beta.1 ([#&#8203;3460](https://redirect.github.com/redis/go-redis/pull/3460)) - DOC-5472 time series doc examples ([#&#8203;3443](https://redirect.github.com/redis/go-redis/pull/3443)) - Add VAMANA compression algorithm tests ([#&#8203;3461](https://redirect.github.com/redis/go-redis/pull/3461)) - bumped redis 8.2 version used in the CI/CD ([#&#8203;3451](https://redirect.github.com/redis/go-redis/pull/3451)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;andy-stark-redis](https://redirect.github.com/andy-stark-redis), [@&#8203;cxljs](https://redirect.github.com/cxljs), [@&#8203;elena-kolevska](https://redirect.github.com/elena-kolevska), [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis), [@&#8203;jouir](https://redirect.github.com/jouir), [@&#8203;monkey92t](https://redirect.github.com/monkey92t), [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa), [@&#8203;rokn](https://redirect.github.com/rokn), [@&#8203;smnvdev](https://redirect.github.com/smnvdev), [@&#8203;strobil](https://redirect.github.com/strobil) and [@&#8203;wzy9607](https://redirect.github.com/wzy9607) #### New Contributors - [@&#8203;htemelski-redis](https://redirect.github.com/htemelski-redis) made their first contribution in [#&#8203;3409](https://redirect.github.com/redis/go-redis/pull/3409) - [@&#8203;smnvdev](https://redirect.github.com/smnvdev) made their first contribution in [#&#8203;3403](https://redirect.github.com/redis/go-redis/pull/3403) - [@&#8203;rokn](https://redirect.github.com/rokn) made their first contribution in [#&#8203;3444](https://redirect.github.com/redis/go-redis/pull/3444) ### [`v9.11.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.11.0): 9.11.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.10.0...v9.11.0) #### 🚀 Highlights Fixes `TxPipeline` to work correctly in cluster scenarios, allowing execution of commands only in the same slot for a given transaction. ### Changes #### 🚀 New Features - Set cluster slot for `scan` commands, rather than random ([#&#8203;2623](https://redirect.github.com/redis/go-redis/pull/2623)) - Add CredentialsProvider field to UniversalOptions ([#&#8203;2927](https://redirect.github.com/redis/go-redis/pull/2927)) - feat(redisotel): add WithCallerEnabled option ([#&#8203;3415](https://redirect.github.com/redis/go-redis/pull/3415)) #### 🐛 Bug Fixes - fix(txpipeline): keyless commands should take the slot of the keyed ([#&#8203;3411](https://redirect.github.com/redis/go-redis/pull/3411)) - fix(loading): cache the loaded flag for slave nodes ([#&#8203;3410](https://redirect.github.com/redis/go-redis/pull/3410)) - fix(txpipeline): should return error on multi/exec on multiple slots ([#&#8203;3408](https://redirect.github.com/redis/go-redis/pull/3408)) - fix: check if the shard exists to avoid returning nil ([#&#8203;3396](https://redirect.github.com/redis/go-redis/pull/3396)) #### 🧰 Maintenance - feat: optimize connection pool waitTurn ([#&#8203;3412](https://redirect.github.com/redis/go-redis/pull/3412)) - chore(ci): update CI redis builds ([#&#8203;3407](https://redirect.github.com/redis/go-redis/pull/3407)) - chore: remove a redundant method from `Ring`, `Client` and `ClusterClient` ([#&#8203;3401](https://redirect.github.com/redis/go-redis/pull/3401)) - test: refactor TestBasicCredentials using table-driven tests ([#&#8203;3406](https://redirect.github.com/redis/go-redis/pull/3406)) - perf: reduce unnecessary memory allocation operations ([#&#8203;3399](https://redirect.github.com/redis/go-redis/pull/3399)) - fix: insert entry during iterating over a map ([#&#8203;3398](https://redirect.github.com/redis/go-redis/pull/3398)) - DOC-5229 probabilistic data type examples ([#&#8203;3413](https://redirect.github.com/redis/go-redis/pull/3413)) - chore(deps): bump rojopolis/spellcheck-github-actions from 0.49.0 to 0.51.0 ([#&#8203;3414](https://redirect.github.com/redis/go-redis/pull/3414)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;andy-stark-redis](https://redirect.github.com/andy-stark-redis), [@&#8203;boekkooi-impossiblecloud](https://redirect.github.com/boekkooi-impossiblecloud), [@&#8203;cxljs](https://redirect.github.com/cxljs), [@&#8203;dcherubini](https://redirect.github.com/dcherubini), [@&#8203;iamamirsalehi](https://redirect.github.com/iamamirsalehi), [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;pete-woods](https://redirect.github.com/pete-woods), [@&#8203;twz915](https://redirect.github.com/twz915) ### [`v9.10.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.10.0): 9.10.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.9.0...v9.10.0) Experimental support for [vector sets](https://redis.io/docs/latest/develop/data-types/vector-sets/)! #### 🚀 Highlights `go-redis` now supports [vector sets](https://redis.io/docs/latest/develop/data-types/vector-sets/). This data type is marked as "in preview" in Redis and its support in `go-redis` is marked as experimental. You can find examples in the documentation and in the `doctests` folder. ### Changes #### 🚀 New Features - feat: support vectorset ([#&#8203;3375](https://redirect.github.com/redis/go-redis/pull/3375)) [@&#8203;fukua95](https://redirect.github.com/fukua95) #### 🧰 Maintenance - Add the missing NewFloatSliceResult for testing ([#&#8203;3393](https://redirect.github.com/redis/go-redis/pull/3393)) - DOC-5078 vector set examples ([#&#8203;3394](https://redirect.github.com/redis/go-redis/pull/3394)) #### Contributors We'd like to thank all the contributors who worked on this release! [@&#8203;AndBobsYourUncle](https://redirect.github.com/AndBobsYourUncle), [@&#8203;andy-stark-redis](https://redirect.github.com/andy-stark-redis), [@&#8203;fukua95](https://redirect.github.com/fukua95) and [@&#8203;ndyakov](https://redirect.github.com/ndyakov) ### [`v9.9.0`](https://redirect.github.com/redis/go-redis/releases/tag/v9.9.0): 9.9.0 [Compare Source](https://redirect.github.com/redis/go-redis/compare/v9.8.0...v9.9.0) #### 🚀 Highlights - **Token-based Authentication**: Added `StreamingCredentialsProvider` for dynamic credential updates (**experimental**) - Can be used with [go-redis-entraid](https://redirect.github.com/redis/go-redis-entraid) for Azure AD authentication - **Connection Statistics**: Added connection waiting statistics for better monitoring - **Failover Improvements**: Added `ParseFailoverURL` for easier failover configuration - **Ring Client Enhancements**: Added shard access methods for better Pub/Sub management #### ✨ New Features - Added `StreamingCredentialsProvider` for token-based authentication ([#&#8203;3320](https://redirect.github.com/redis/go-redis/pull/3320)) - Supports dynamic credential updates - Includes connection close hooks - Note: Currently marked as experimental - Added `ParseFailoverURL` for parsing failover URLs ([#&#8203;3362](https://redirect.github.com/redis/go-redis/pull/3362)) - Added connection waiting statistics ([#&#8203;2804](https://redirect.github.com/redis/go-redis/pull/2804)) - Added new utility functions: - `ParseFloat` and `MustParseFloat` in public utils package ([#&#8203;3371](https://redirect.github.com/redis/go-redis/pull/3371)) - Unit tests for `Atoi`, `ParseInt`, `ParseUint`, and `ParseFloat` ([#&#8203;3377](https://redirect.github.com/redis/go-redis/pull/3377)) - Added Ring client shard access methods: - `GetShardClients()` to retrieve all active shard clients - `GetShardClientForKey(key string)` to get the shard client for a specific key ([#&#8203;3388](https://redirect.github.com/redis/go-redis/pull/3388)) #### 🐛 Bug Fixes - Fixed routing reads to loading slave nodes ([#&#8203;3370](https://redirect.github.com/redis/go-redis/pull/3370)) - Added support for nil lag in XINFO GROUPS ([#&#8203;3369](https://redirect.github.com/redis/go-redis/pull/3369)) - Fixed pool acquisition timeout issues ([#&#8203;3381](https://redirect.github.com/redis/go-redis/pull/3381)) - Optimized unnecessary copy operations ([#&#8203;3376](https://redirect.github.com/redis/go-redis/pull/3376)) #### 📚 Documentation - Updated documentation for XINFO GROUPS with nil lag support ([#&#8203;3369](https://redirect.github.com/redis/go-redis/pull/3369)) - Added package-level comments for new features #### ⚡ Performance and Reliability - Optimized `ReplaceSpaces` function ([#&#8203;3383](https://redirect.github.com/redis/go-redis/pull/3383)) - Set default value for `Options.Protocol` in `init()` ([#&#8203;3387](https://redirect.github.com/redis/go-redis/pull/3387)) - Exported pool errors for public consumption ([#&#8203;3380](https://redirect.github.com/redis/go-redis/pull/3380)) #### 🔧 Dependencies and Infrastructure - Updated Redis CI to version 8.0.1 ([#&#8203;3372](https://redirect.github.com/redis/go-redis/pull/3372)) - Updated spellcheck GitHub Actions ([#&#8203;3389](https://redirect.github.com/redis/go-redis/pull/3389)) - Removed unused parameters ([#&#8203;3382](https://redirect.github.com/redis/go-redis/pull/3382), [#&#8203;3384](https://redirect.github.com/redis/go-redis/pull/3384)) #### 🧪 Testing - Added unit tests for pool acquisition timeout ([#&#8203;3381](https://redirect.github.com/redis/go-redis/pull/3381)) - Added unit tests for utility functions ([#&#8203;3377](https://redirect.github.com/redis/go-redis/pull/3377)) #### 👥 Contributors We would like to thank all the contributors who made this release possible: [@&#8203;ndyakov](https://redirect.github.com/ndyakov), [@&#8203;ofekshenawa](https://redirect.github.com/ofekshenawa), [@&#8203;LINKIWI](https://redirect.github.com/LINKIWI), [@&#8203;iamamirsalehi](https://redirect.github.com/iamamirsalehi), [@&#8203;fukua95](https://redirect.github </details> --- ### Configuration 📅 **Schedule**: Branch creation - "* 1 * * 1-5" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoiOC4xOSIsImxhYmVscyI6WyJUZWFtOlNlY3VyaXR5LUNsb3VkIFNlcnZpY2VzIiwiYmFja3BvcnQtc2tpcCIsImRlcGVuZGVuY2llcyIsInJlbm92YXRlIiwicmVub3ZhdGUtYXV0by1hcHByb3ZlIl19--> Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com>
1 parent be4f222 commit 03b1809

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ require (
227227
github.com/openvex/discovery v0.1.1-0.20240802171711-7c54efc57553 // indirect
228228
github.com/pkg/errors v0.9.1 // indirect
229229
github.com/planetscale/vtprotobuf v0.6.1-0.20250313105119-ba97887b0a25 // indirect
230-
github.com/redis/go-redis/extra/redisotel/v9 v9.5.3 // indirect
230+
github.com/redis/go-redis/extra/redisotel/v9 v9.19.0 // indirect
231+
github.com/redis/go-redis/v9 v9.19.0 // indirect
231232
github.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c // indirect
232233
github.com/sagikazarmark/locafero v0.12.0 // indirect
233234
github.com/samber/oops v1.21.0 // indirect

go.sum

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2012,12 +2012,12 @@ github.com/protocolbuffers/txtpbfmt v0.0.0-20231025115547-084445ff1adf h1:014O62
20122012
github.com/protocolbuffers/txtpbfmt v0.0.0-20231025115547-084445ff1adf/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c=
20132013
github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg=
20142014
github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
2015-
github.com/redis/go-redis/extra/rediscmd/v9 v9.5.3 h1:1/BDligzCa40GTllkDnY3Y5DTHuKCONbB2JcRyIfl20=
2016-
github.com/redis/go-redis/extra/rediscmd/v9 v9.5.3/go.mod h1:3dZmcLn3Qw6FLlWASn1g4y+YO9ycEFUOM+bhBmzLVKQ=
2017-
github.com/redis/go-redis/extra/redisotel/v9 v9.5.3 h1:kuvuJL/+MZIEdvtb/kTBRiRgYaOmx1l+lYJyVdrRUOs=
2018-
github.com/redis/go-redis/extra/redisotel/v9 v9.5.3/go.mod h1:7f/FMrf5RRRVHXgfk7CzSVzXHiWeuOQUu2bsVqWoa+g=
2019-
github.com/redis/go-redis/v9 v9.17.2 h1:P2EGsA4qVIM3Pp+aPocCJ7DguDHhqrXNhVcEp4ViluI=
2020-
github.com/redis/go-redis/v9 v9.17.2/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370=
2015+
github.com/redis/go-redis/extra/rediscmd/v9 v9.19.0 h1:QL3vQTj64ZQpxiDZx6bFYS7oN37EdHHqiYGz3grgTRI=
2016+
github.com/redis/go-redis/extra/rediscmd/v9 v9.19.0/go.mod h1:kGroOkFJzE2Si+mojCi3PCvuAnGnzEh1FAzy1Oh9mI8=
2017+
github.com/redis/go-redis/extra/redisotel/v9 v9.19.0 h1:yXeFe+EFMUirnzzy8MI5iazoqlpBdzVC6pk+K2Mu7do=
2018+
github.com/redis/go-redis/extra/redisotel/v9 v9.19.0/go.mod h1:GgAFS1Cg26tQEiHzDd8cHXPKUzzTineQ91Ei9glAxQs=
2019+
github.com/redis/go-redis/v9 v9.19.0 h1:XPVaaPSnG6RhYf7p+rmSa9zZfeVAnWsH5h3lxthOm/k=
2020+
github.com/redis/go-redis/v9 v9.19.0/go.mod h1:v/M13XI1PVCDcm01VtPFOADfZtHf8YW3baQf57KlIkA=
20212021
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
20222022
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
20232023
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
@@ -2391,6 +2391,8 @@ go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN
23912391
go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4=
23922392
go.step.sm/crypto v0.74.0 h1:/APBEv45yYR4qQFg47HA8w1nesIGcxh44pGyQNw6JRA=
23932393
go.step.sm/crypto v0.74.0/go.mod h1:UoXqCAJjjRgzPte0Llaqen7O9P7XjPmgjgTHQGkKCDk=
2394+
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
2395+
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
23942396
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
23952397
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
23962398
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=

0 commit comments

Comments
 (0)