Skip to content

Releases: redis/go-redis

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

9.15.0-beta.2

26 Sep 16:41
8b38e27

Choose a tag to compare

9.15.0-beta.2 Pre-release
Pre-release

Highlights

This beta release includes a pre-production version of processing push notifications and hitless upgrades.

Changes

  • chore: Update hash_commands.go (#3523)

πŸš€ New Features

  • feat: RESP3 notifications support & Hitless notifications handling (#3418)

πŸ› Bug Fixes

  • fix: pipeline repeatedly sets the error (#3525)

🧰 Maintenance

  • chore(deps): bump rojopolis/spellcheck-github-actions from 0.51.0 to 0.52.0 (#3520)
  • feat(e2e-testing): maintnotifications e2e and refactor (#3526)
  • feat(tag.sh): Improved resiliency of the release process (#3530)

Contributors

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

@cxljs, @ndyakov, @htemelski-redis, and @omid-h70