Skip to content

Releases: redis/go-redis

9.18.0-beta.2

09 Dec 13:54
e4965ea

Choose a tag to compare

9.18.0-beta.2 Pre-release
Pre-release

๐Ÿš€ Highlights

Go Version Update

This release updates the minimum required Go version to 1.21. This is part of a gradual migration strategy where the minimum supported Go version will be three versions behind the latest release. With each new Go version release, we will bump the minimum version by one, ensuring compatibility while staying current with the Go ecosystem.

Stability Improvements

This release includes several important stability fixes:

  • Fixed a critical panic in the handoff worker manager that could occur when handling nil errors
  • Improved test reliability for Smart Client Handoff functionality
  • Fixed logging format issues that could cause runtime errors

โœจ New Features

  • OpenTelemetry metrics improvements for nil response handling (#3638) by @fengve

๐Ÿ› Bug Fixes

  • Fixed panic on nil error in handoffWorkerManager closeConnFromRequest (#3633) by @ccoVeille
  • Fixed bad sprintf syntax in logging (#3632) by @ccoVeille

๐Ÿงฐ Maintenance

๐Ÿ‘ฅ Contributors

We'd like to thank all the contributors who worked on this release!

@justinhwang, @ndyakov, @kiryazovi-redis, @fengve, @ccoVeille, @ofekshenawa

9.18.0-beta.1

02 Dec 13:11
981f5db

Choose a tag to compare

9.18.0-beta.1 Pre-release
Pre-release

pre-release v9.18.0-beta.1

๐Ÿš€ Highlights

Request and Response Policy Based Routing in Cluster Mode

This beta release introduces comprehensive support for Redis COMMAND-based request and response policy routing for cluster clients. This feature enables intelligent command routing and response aggregation based on Redis command metadata.

Key Features:

  • Command Policy Loader: Automatically parses and caches COMMAND metadata with routing/aggregation hints
  • Enhanced Routing Engine: Supports all request policies including:
    • default(keyless) - Commands without keys
    • default(hashslot) - Commands with hash slot routing
    • all_shards - Commands that need to run on all shards
    • all_nodes - Commands that need to run on all nodes
    • multi_shard - Commands that span multiple shards
    • special - Commands with custom routing logic
  • Response Aggregator: Intelligently combines multi-shard replies based on response policies:
    • all_succeeded - All shards must succeed
    • one_succeeded - At least one shard must succeed
    • agg_sum - Aggregate numeric responses
    • special - Custom aggregation logic (e.g., FT.CURSOR)
  • Raw Command Support: Policies are enforced on Client.Do(ctx, args...)

This feature is particularly useful for Redis Stack commands like RediSearch that need to operate across multiple shards in a cluster.

Connection Pool Improvements

Fixed a critical defect in the connection pool's turn management mechanism that could lead to connection leaks under certain conditions. The fix ensures proper 1:1 correspondence between turns and connections.

โœจ New Features

๐Ÿ› Bug Fixes

  • Fixed connection pool turn management to prevent connection leaks (#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, @ofekshenawa, @ndyakov

9.17.2

01 Dec 14:01
d3e7d4c

Choose a tag to compare

๐Ÿ› 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

9.17.1

26 Nov 10:23
68d8c59

Choose a tag to compare

๐Ÿ› Bug Fixes

๐Ÿงฐ 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!

@marcoferrer and @ndyakov

9.17.0

19 Nov 17:57
5b0b228

Choose a tag to compare

๐Ÿš€ 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, and ACLWhoAmI (#3576)
  • SLOWLOG Commands: Added SLOWLOG LEN and SLOWLOG RESET (#3585)
  • LATENCY Commands: Added LATENCY LATEST and LATENCY RESET (#3584)

Search & Vector Improvements

  • Hybrid Search: Added EXPERIMENTAL support for the new FT.HYBRID command (#3573)
  • Vector Range: Added VRANGE command 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

๐Ÿ› Bug Fixes

โšก 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

๐Ÿ‘ฅ 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: v9.16.0...v9.17.0

9.16.0

23 Oct 15:11
f195656

Choose a tag to compare

๐Ÿš€ 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 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 (#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.WithAttributeSet to avoid unnecessary attribute copying in redisotel (#3552)

๐Ÿ“š Documentation

  • Cluster Client: Add explanation for why MaxRetries is disabled for ClusterClient (#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-actions from 0.51.0 to 0.52.0 (#3520)
  • Bump github/codeql-action from 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: v9.14.0...v9.16.0

9.14.1

18 Oct 21:53
512579f

Choose a tag to compare

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!

@Sovietaced, @ndyakov

9.16.0-beta.1

27 Sep 15:48
819f01b

Choose a tag to compare

9.16.0-beta.1 Pre-release
Pre-release

Clean state beta release, retracting 9.15.0

Retract v9.15.0 and v9.15.1

27 Sep 20:34
a44df88

Choose a tag to compare

version 9.15.1, used to retract itself and 9.15.0 (#3537)

* version 9.15.1, used to retract itself and 9.15.0

* added retract to the submodules

* revert submodules retracts as they are not needed

9.15.0-beta.3

26 Sep 23:18
7405cff

Choose a tag to compare

9.15.0-beta.3 Pre-release
Pre-release

Changes

Same as v9.15.0-beta.2
Retracts v9.15.0