workhorse: Update module github.com/redis/go-redis/v9 to v9.17.2
This MR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| github.com/redis/go-redis/v9 | require | minor |
v9.10.0 -> v9.17.2
|
MR created with the help of gitlab-org/frontend/renovate-gitlab-bot
Release Notes
redis/go-redis (github.com/redis/go-redis/v9)
v9.17.2: 9.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 (#3626) by @cyningsun
- Context Timeout: Improved context timeout calculation to use minimum of remaining time and DialTimeout, preventing goroutines from waiting longer than necessary (#3626) by @cyningsun
🧰 Maintenance
- chore(deps): bump rojopolis/spellcheck-github-actions from 0.54.0 to 0.55.0 (#3627)
Contributors
We'd like to thank all the contributors who worked on this release!
@cyningsun and @ndyakov
v9.17.1: 9.17.1
🐛 Bug Fixes
- add wait to keyless commands list (#3615) by @marcoferrer
- fix(time): remove cached time optimization (#3611) by @ndyakov
🧰 Maintenance
- chore(deps): bump golangci/golangci-lint-action from 9.0.0 to 9.1.0 (#3609)
- chore(deps): bump actions/checkout from 5 to 6 (#3610)
- chore(script): fix help call in tag.sh (#3606) by @ndyakov
Contributors
We'd like to thank all the contributors who worked on this release!
v9.17.0: 9.17.0
🚀 Highlights
Redis 8.4 Support
Added support for Redis 8.4, including new commands and features (#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 (#3602)
New Commands
-
CAS/CAD Commands: Added support for Compare-And-Set/Compare-And-Delete operations with conditional matching (
IFEQ,IFNE,IFDEQ,IFDNE) (#3583, #3595) - MSETEX: Atomically set multiple key-value pairs with expiration options and conditional modes (#3580)
- XReadGroup CLAIM: Consume both incoming and idle pending entries from streams in a single call (#3578)
-
ACL Commands: Added
ACLGenPass,ACLUsers, andACLWhoAmI(#3576) -
SLOWLOG Commands: Added
SLOWLOG LENandSLOWLOG RESET(#3585) -
LATENCY Commands: Added
LATENCY LATESTandLATENCY RESET(#3584)
Search & Vector Improvements
-
Hybrid Search: Added EXPERIMENTAL support for the new
FT.HYBRIDcommand (#3573) -
Vector Range: Added
VRANGEcommand for vector sets (#3543) - FT.INFO Enhancements: Added vector-specific attributes in FT.INFO response (#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 (#3518)
- Connection State Machine: Resolved race conditions and improved pool performance with proper state tracking (#3559)
- Pool Performance: Significant performance improvements with faster semaphores, lockless hook manager, and reduced allocations (47-67% faster Get/Put operations) (#3565)
Metrics & Observability
- Canceled Metric Attribute: Added 'canceled' metrics attribute to distinguish context cancellation errors from other errors (#3566)
✨ New Features
- Typed errors with wrapping support (#3602) by @ndyakov
- CAS/CAD commands (marked as experimental) (#3583, #3595) by @ndyakov, @htemelski-redis
- MSETEX command support (#3580) by @ofekshenawa
- XReadGroup CLAIM argument (#3578) by @ofekshenawa
- ACL commands: GenPass, Users, WhoAmI (#3576) by @destinyoooo
- SLOWLOG commands: LEN, RESET (#3585) by @destinyoooo
- LATENCY commands: LATEST, RESET (#3584) by @destinyoooo
- Hybrid search command (FT.HYBRID) (#3573) by @htemelski-redis
- Vector range command (VRANGE) (#3543) by @cxljs
- Vector-specific attributes in FT.INFO (#3596) by @ndyakov
- Improved connection pool success rate with FIFO queue (#3518) by @cyningsun
- Canceled metrics attribute for context errors (#3566) by @pvragov
🐛 Bug Fixes
- Fixed Failover Client MaintNotificationsConfig (#3600) by @ajax16384
- Fixed ACLGenPass function to use the bit parameter (#3597) by @destinyoooo
- Return error instead of panic from commands (#3568) by @dragneelfps
- Safety harness in
joinErrorsto prevent panic (#3577) by @manisharma
⚡ Performance
- Connection state machine with race condition fixes (#3559) by @ndyakov
- Pool performance improvements: 47-67% faster Get/Put, 33% less memory, 50% fewer allocations (#3565) by @ndyakov
🧪 Testing & Infrastructure
- Updated to Redis 8.4.0 image (#3603) by @ndyakov
- Added Redis 8.4-RC1-pre to CI (#3572) by @ndyakov
- Refactored tests for idiomatic Go (#3561, #3562, #3563) by @12ya
👥 Contributors
We'd like to thank all the contributors who worked on this release!
@12ya, @ajax16384, @cxljs, @cyningsun, @destinyoooo, @dragneelfps, @htemelski-redis, @manisharma, @ndyakov, @ofekshenawa, @pvragov
Full Changelog: https://github.com/redis/go-redis/compare/v9.16.0...v9.17.0
v9.16.0: 9.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.
✨ New Features
-
Trace Filtering: Add support for filtering traces for specific commands, including pipeline operations and dial operations (#3519, #3550)
- New
TraceCmdFilteroption to selectively trace commands - Reduces overhead by excluding high-frequency or low-value commands from traces
- New
🐛 Bug Fixes
- Pipeline Error Handling: Fix issue where pipeline repeatedly sets the same error (#3525)
- Connection Pool: Ensure re-authentication does not interfere with connection handoff operations (#3547)
🔧 Improvements
- Hash Commands: Update hash command implementations (#3523)
-
OpenTelemetry: Use
metric.WithAttributeSetto avoid unnecessary attribute copying in redisotel (#3552)
📚 Documentation
-
Cluster Client: Add explanation for why
MaxRetriesis disabled forClusterClient(#3551)
🧪 Testing & Infrastructure
- E2E Testing: Upgrade E2E testing framework with improved reliability and coverage (#3541)
- Release Process: Improved resiliency of the release process (#3530)
📦 Dependencies
- Bump
rojopolis/spellcheck-github-actionsfrom 0.51.0 to 0.52.0 (#3520) - Bump
github/codeql-actionfrom 3 to 4 (#3544)
👥 Contributors
We'd like to thank all the contributors who worked on this release!
@ndyakov, @htemelski-redis, @Sovietaced, @Udhayarajan, @boekkooi-impossiblecloud, @Pika-Gopher, @cxljs, @huiyifyj, @omid-h70
Full Changelog: https://github.com/redis/go-redis/compare/v9.14.0...v9.16.0
v9.15.1: Retract v9.15.0 and v9.15.1
v9.14.1: 9.14.1
Changes
- fix(otel): Add support for filtering traces for certain commands (#3519)
- fix(pool): remove conn from idleConns if present (#3546)
Contributors
We'd like to thank all the contributors who worked on this release!
v9.14.0: 9.14.0
Highlights
- Added batch process method to the pipeline (#3510)
Changes
🚀 New Features
- Added batch process method to the pipeline (#3510)
🐛 Bug Fixes
- fix: SetErr on Cmd if the command cannot be queued correctly in multi/exec (#3509)
🧰 Maintenance
- Updates release drafter config to exclude dependabot (#3511)
- chore(deps): bump actions/setup-go from 5 to 6 (#3504)
Contributors
We'd like to thank all the contributors who worked on this release!
@elena-kolevska, @htemelski-redis and @ndyakov
v9.13.0: 9.13.0
Highlights
- Pipeliner expose queued commands (#3496)
- Ensure that JSON.GET returns Nil response (#3470)
- Fixes on Read and Write buffer sizes and UniversalOptions
Changes
- Pipeliner expose queued commands (#3496)
- fix(test): fix a timing issue in pubsub test (#3498)
- Allow users to enable read-write splitting in failover mode. (#3482)
- Set the read/write buffer size of the sentinel client to 4KiB (#3476)
🚀 New Features
- fix(otel): register wait metrics (#3499)
- Support subscriptions against cluster slave nodes (#3480)
- Add wait metrics to otel (#3493)
- Clean failing timeout implementation (#3472)
🐛 Bug Fixes
- Do not assume that all non-IP hosts are loopbacks (#3085)
- Ensure that JSON.GET returns Nil response (#3470)
🧰 Maintenance
- fix(otel): register wait metrics (#3499)
- fix(make test): Add default env in makefile (#3491)
- Update the introduction to running tests in README.md (#3495)
- test: Add comprehensive edge case tests for IncrByFloat command (#3477)
- Set the default read/write buffer size of Redis connection to 32KiB (#3483)
- Bumps test image to 8.2.1-pre (#3478)
- fix UniversalOptions miss ReadBufferSize and WriteBufferSize options (#3485)
- chore(deps): bump actions/checkout from 4 to 5 (#3484)
- Removes dry run for stale issues policy (#3471)
- Update otel metrics URL (#3474)
Contributors
We'd like to thank all the contributors who worked on this release!
@LINKIWI, @cxljs, @cybersmeashish, @elena-kolevska, @htemelski-redis, @mwhooker, @ndyakov, @ofekshenawa, @suever
v9.12.1: 9.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 (#3468)
🧰 Maintenance
- fix(options): Add buffer sizes to failover. Update README (#3468)
- chore: update & fix otel example (#3466)
Contributors
We'd like to thank all the contributors who worked on this release!
v9.12.0: 9.12.0
🚀 Highlights
- This release includes support for Redis 8.2.
- Introduces an experimental Query Builders for
FTSearch,FTAggregateand other search commands. - Adds support for
EPSILONoption inFT.VSIM. - Includes bug fixes and improvements contributed by the community related to ring and redisotel.
Changes
- Improve stale issue workflow (#3458)
- chore(ci): Add 8.2 rc2 pre build for CI (#3459)
- Added new stream commands (#3450)
- feat: Add "skip_verify" to Sentinel (#3428)
- fix:
errors.Joinrequires Go 1.20 or later (#3442) - DOC-4344 document quickstart examples (#3426)
- feat(bitop): add support for the new bitop operations (#3409)
🚀 New Features
- feat: recover addIdleConn may occur panic (#2445)
- feat(ring): specify custom health check func via HeartbeatFn option (#2940)
- Add Query Builder for RediSearch commands (#3436)
- add configurable buffer sizes for Redis connections (#3453)
- Add VAMANA vector type to RediSearch (#3449)
- VSIM add
EPSILONoption (#3454) - Add closing support to otel metrics instrumentation (#3444)
🐛 Bug Fixes
- fix(redisotel): fix buggy append in reportPoolStats (#3122)
- fix(search): return results even if doc is empty (#3457)
- [ISSUE-3402]: Ring.Pipelined return dial timeout error (#3403)
🧰 Maintenance
- Merges stale issues jobs into one job with two steps (#3463)
- improve code readability (#3446)
- chore(release): 9.12.0-beta.1 (#3460)
- DOC-5472 time series doc examples (#3443)
- Add VAMANA compression algorithm tests (#3461)
- bumped redis 8.2 version used in the CI/CD (#3451)
Contributors
We'd like to thank all the contributors who worked on this release!
@andy-stark-redis, @cxljs, @elena-kolevska, @htemelski-redis, @jouir, @monkey92t, @ndyakov, @ofekshenawa, @rokn, @smnvdev, @strobil and @wzy9607
New Contributors
- @htemelski-redis made their first contribution in #3409
- @smnvdev made their first contribution in #3403
- @rokn made their first contribution in #3444
v9.11.0: 9.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
scancommands, rather than random (#2623) - Add CredentialsProvider field to UniversalOptions (#2927)
- feat(redisotel): add WithCallerEnabled option (#3415)
🐛 Bug Fixes
- fix(txpipeline): keyless commands should take the slot of the keyed (#3411)
- fix(loading): cache the loaded flag for slave nodes (#3410)
- fix(txpipeline): should return error on multi/exec on multiple slots (#3408)
- fix: check if the shard exists to avoid returning nil (#3396)
🧰 Maintenance
- feat: optimize connection pool waitTurn (#3412)
- chore(ci): update CI redis builds (#3407)
- chore: remove a redundant method from
Ring,ClientandClusterClient(#3401) - test: refactor TestBasicCredentials using table-driven tests (#3406)
- perf: reduce unnecessary memory allocation operations (#3399)
- fix: insert entry during iterating over a map (#3398)
- DOC-5229 probabilistic data type examples (#3413)
- chore(deps): bump rojopolis/spellcheck-github-actions from 0.49.0 to 0.51.0 (#3414)
Contributors
We'd like to thank all the contributors who worked on this release!
@andy-stark-redis, @boekkooi-impossiblecloud, @cxljs, @dcherubini, @iamamirsalehi, @ndyakov, @pete-woods, @twz915
Configuration
- If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.