Skip to content

Releases: redis/go-redis

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

9.15.0-beta.1

10 Sep 20:05
0dcfeef

Choose a tag to compare

9.15.0-beta.1 Pre-release
Pre-release

Highlights

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

Hitless Upgrades

Hitless upgrades is a major new feature that allows for zero-downtime upgrades in Redis clusters.
You can find more information in the Hitless Upgrades documentation.

Changes

🚀 New Features

  • [CAE-1088] & [CAE-1072] feat: RESP3 notifications support & Hitless notifications handling (#3418)

Contributors

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

@ndyakov, @htemelski-redis, @ofekshenawa

9.14.0

10 Sep 12:02
2da6ca0

Choose a tag to compare

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

9.13.0

03 Sep 11:56
52bda7a

Choose a tag to compare

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