github redis/go-redis v9.18.0-beta.1
9.18.0-beta.1

pre-release2 hours ago

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

Don't miss a new go-redis release

NewReleases is sending notifications on new releases.