Skip to content

Releases: redis/go-redis

9.12.1

11 Aug 16:00
7b4a537
Compare
Choose a tag to compare

🚀 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!

@ndyakov and @vmihailenco

9.12.0

05 Aug 13:52
b7838dc
Compare
Choose a tag to compare

🚀 Highlights

  • This release includes support for Redis 8.2.
  • Introduces an experimental Query Builders for FTSearch, FTAggregate and other search commands.
  • Adds support for EPSILON option in FT.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.Join requires 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 EPSILON option (#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

9.12.0-beta.1

04 Aug 12:04
f006e94
Compare
Choose a tag to compare
9.12.0-beta.1 Pre-release
Pre-release

🚀 Highlights

  • This is a beta release for Redis 8.2 support.
  • Introduces an experimental Query Builders for FTSearch, FTAggregate and other search commands.
  • Adds support for EPSILON option in FT.VSIM.
  • Includes bug fixes and improvements related to search and community contributions for redisotel.

Changes

  • chore(github): 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.Join requires Go 1.20 or later (#3442)
  • DOC-4344 document quickstart examples (#3426)
  • feat(bitop): add support for the new bitop operations (#3409)

🚀 New Features

  • Add Query Builder for RediSearch commands (#3436)
  • Add configurable buffer sizes for Redis connections (#3453)
  • Add VAMANA vector type to RediSearch (#3449)
  • VSIM add EPSILON option (#3454)
  • Add closing support to otel metrics instrumentation (#3444)

🐛 Bug Fixes

  • fix(search): return results even if doc is empty (#3457)
  • [ISSUE-3402]: Ring.Pipelined return dial timeout error (#3403)

🧰 Maintenance

  • 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, @htemelski-redis, @jouir, @ndyakov, @ofekshenawa, @rokn and @smnvdev

New Contributors

9.11.0

24 Jun 11:10
0decfdc
Compare
Choose a tag to compare

🚀 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 scan commands, 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, Client and ClusterClient (#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

9.10.0

06 Jun 15:35
75e8370
Compare
Choose a tag to compare

Experimental support for vector sets!

🚀 Highlights

go-redis now supports vector sets. This data type is marked as "in preview" in Redis and its support in go-redis is marked as experimental. You can find examples in the documentation and in the doctests folder.

Changes

🚀 New Features

🧰 Maintenance

  • Add the missing NewFloatSliceResult for testing (#3393)
  • DOC-5078 vector set examples (#3394)

Contributors

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

@AndBobsYourUncle, @andy-stark-redis, @fukua95 and @ndyakov

9.9.0

27 May 16:10
c935f96
Compare
Choose a tag to compare

🚀 Highlights

  • Token-based Authentication: Added StreamingCredentialsProvider for dynamic credential updates (experimental)
  • Connection Statistics: Added connection waiting statistics for better monitoring
  • Failover Improvements: Added ParseFailoverURL for easier failover configuration
  • Ring Client Enhancements: Added shard access methods for better Pub/Sub management

✨ New Features

  • Added StreamingCredentialsProvider for token-based authentication (#3320)
    • Supports dynamic credential updates
    • Includes connection close hooks
    • Note: Currently marked as experimental
  • Added ParseFailoverURL for parsing failover URLs (#3362)
  • Added connection waiting statistics (#2804)
  • Added new utility functions:
    • ParseFloat and MustParseFloat in public utils package (#3371)
    • Unit tests for Atoi, ParseInt, ParseUint, and ParseFloat (#3377)
  • Added Ring client shard access methods:
    • GetShardClients() to retrieve all active shard clients
    • GetShardClientForKey(key string) to get the shard client for a specific key (#3388)

🐛 Bug Fixes

  • Fixed routing reads to loading slave nodes (#3370)
  • Added support for nil lag in XINFO GROUPS (#3369)
  • Fixed pool acquisition timeout issues (#3381)
  • Optimized unnecessary copy operations (#3376)

📚 Documentation

  • Updated documentation for XINFO GROUPS with nil lag support (#3369)
  • Added package-level comments for new features

⚡ Performance and Reliability

  • Optimized ReplaceSpaces function (#3383)
  • Set default value for Options.Protocol in init() (#3387)
  • Exported pool errors for public consumption (#3380)

🔧 Dependencies and Infrastructure

  • Updated Redis CI to version 8.0.1 (#3372)
  • Updated spellcheck GitHub Actions (#3389)
  • Removed unused parameters (#3382, #3384)

🧪 Testing

  • Added unit tests for pool acquisition timeout (#3381)
  • Added unit tests for utility functions (#3377)

👥 Contributors

We would like to thank all the contributors who made this release possible:

@ndyakov, @ofekshenawa, @LINKIWI, @iamamirsalehi, @fukua95, @lzakharov, @DengY11

📝 Changelog

For a complete list of changes, see the full changelog.

v9.8.0

30 Apr 11:41
fba6dec
Compare
Choose a tag to compare

9.8.0 (2025-04-30)

🚀 Highlights

  • Redis 8 Support: Full compatibility with Redis 8.0, including testing and CI integration
  • Enhanced Hash Operations: Added support for new hash commands (HGETDEL, HGETEX, HSETEX) and HSTRLEN command
  • Search Improvements: Enabled Search DIALECT 2 by default and added CountOnly argument for FT.Search

✨ New Features

  • Added support for new hash commands: HGETDEL, HGETEX, HSETEX (#3305)
  • Added HSTRLEN command for hash operations (#2843)
  • Added Do method for raw query by single connection from pool.Conn() (#3182)
  • Prevent false-positive marshaling by treating zero time.Time as empty in isEmptyValue (#3273)
  • Added FailoverClusterClient support for Universal client (#2794)
  • Added support for cluster mode with IsClusterMode config parameter (#3255)
  • Added client name support in HELLO RESP handshake (#3294)
  • Enabled Search DIALECT 2 by default (#3213)
  • Added read-only option for failover configurations (#3281)
  • Added CountOnly argument for FT.Search to use LIMIT 0 0 (#3338)
  • Added DB option support in NewFailoverClusterClient (#3342)
  • Added nil check for the options when creating a client (#3363)

🐛 Bug Fixes

  • Fixed PubSub concurrency safety issues (#3360)
  • Fixed panic caused when argument is nil (#3353)
  • Improved error handling when fetching master node from sentinels (#3349)
  • Fixed connection pool timeout issues and increased retries (#3298)
  • Fixed context cancellation error leading to connection spikes on Primary instances (#3190)
  • Fixed RedisCluster client to consider MASTERDOWN a retriable error (#3164)
  • Fixed tracing to show complete commands instead of truncated versions (#3290)
  • Fixed OpenTelemetry instrumentation to prevent multiple span reporting (#3168)
  • Fixed FT.Search Limit argument and added CountOnly argument for limit 0 0 (#3338)
  • Fixed missing command in interface (#3344)
  • Fixed slot calculation for COUNTKEYSINSLOT command (#3327)
  • Updated PubSub implementation with correct context (#3329)

📚 Documentation

  • Added hash search examples (#3357)
  • Fixed documentation comments (#3351)
  • Added CountOnly search example (#3345)
  • Added examples for list commands: LLEN, LPOP, LPUSH, LRANGE, RPOP, RPUSH (#3234)
  • Added SADD and SMEMBERS command examples (#3242)
  • Updated README.md to use Redis Discord guild (#3331)
  • Updated HExpire command documentation (#3355)
  • Featured OpenTelemetry instrumentation more prominently (#3316)
  • Updated README.md with additional information (#310ce55)

⚡ Performance and Reliability

  • Bound connection pool background dials to configured dial timeout (#3089)
  • Ensured context isn't exhausted via concurrent query (#3334)

🔧 Dependencies and Infrastructure

  • Updated testing image to Redis 8.0-RC2 (#3361)
  • Enabled CI for Redis CE 8.0 (#3274)
  • Updated various dependencies:
    • Bumped golangci/golangci-lint-action from 6.5.0 to 7.0.0 (#3354)
    • Bumped rojopolis/spellcheck-github-actions (#3336)
    • Bumped golang.org/x/net in example/otel (#3308)
  • Migrated golangci-lint configuration to v2 format (#3354)

⚠️ Breaking Changes

  • Enabled Search DIALECT 2 by default (#3213)
  • Dropped RedisGears (Triggers and Functions) support (#3321)
  • Dropped FT.PROFILE command that was never enabled (#3323)

🔒 Security

🧪 Testing

  • Added integration tests for Redis 8 behavior changes in Redis Search (#3337)
  • Added vector types INT8 and UINT8 tests (#3299)
  • Added test codes for search_commands.go (#3285)
  • Fixed example test sorting (#3292)

👥 Contributors

We would like to thank all the contributors who made this release possible:

@alexander-menshchikov, @EXPEbdodla, @afti, @dmaier-redislabs, @four_leaf_clover, @alohaglenn, @gh73962, @justinmir, @LINKIWI, @liushuangbill, @golang88, @gnpaone, @ndyakov, @nikolaydubina, @oleglacto, @andy-stark-redis, @rodneyosodo, @dependabot, @rfyiamcool, @frankxjkuang, @fukua95, @soleymani-milad, @ofekshenawa, @khasanovbi

v9.8.0-beta.1

24 Mar 20:12
b026cf8
Compare
Choose a tag to compare
v9.8.0-beta.1 Pre-release
Pre-release

Changes

Overview

This is a beta release with support for Redis 8

Important

This release introduces a client-side default dialect for Redis’ search and query capabilities. By default, the client now overrides the server-side dialect with version 2, automatically appending DIALECT 2 to commands like FT.AGGREGATE and FT.SEARCH.

Important: Be aware that the query dialect may impact the results returned. If needed, you can revert to a different dialect version by passing the desired dialect in the arguments of the command you want to execute.
For example:

	res2, err := rdb.FTSearchWithArgs(ctx,
		"idx:bicycle",
		"@pickup_zone:[CONTAINS $bike]",
		&redis.FTSearchOptions{
			Params: map[string]interface{}{
				"bike": "POINT(-0.1278 51.5074)",
			},
			DialectVersion: 3,
		},
	).Result()

You can find further details in the query dialect documentation.

🚀 New Features

  • Support TimeSeries commands with RESP 2 protocol (#3184)
  • Support Probabilistic commands with RESP 2 protocol (#3176)
  • Support JSON with RESP 2 protocol (#3146)
  • Support new hash commands: HGETDEL, HGETEX, HSETEX #3305
  • Add FailoverClusterClient support for Universal client #2794
  • Add vector types INT8 and UINT8 #3299
  • Do method for raw query by single conn from pool.Conn() #3182
  • Recognize byte slice for key argument in cluster client hash slot computation #3049
  • Add skip_verify param #3216

🛠️ Improvements

  • Remove direct read from TLS underlying conn #3138
  • Eliminate redundant dial mutex causing unbounded connection queue contention #3088
  • Only check latencies once every 10 seconds with routeByLatency #2795
  • SortByWithCount FTSearchOptions fix #3201
  • feat(command): add ACL commands, validate module categories exist #3262
  • fix(aggregate, search): ft.aggregate bugfixes #3263
  • feat: add unstableresp3 to cluster client #3266
  • fix: flaky ClientKillByFilter test #3268
  • test: add test for INFO in RCE 8 #3269
  • test(redisotel): add tracing hook tests #3270
  • Reinstate read-only lock on hooks access in dialHook to fix data race #3225
  • fix(search): if ft.aggregate use limit when limitoffset is zero #3275
  • fix(search&aggregate):fix error overwrite and typo #3224
  • move regexp.MustCompile close to call #3280
  • fix: nil pointer dereferencing in writeArg #3271
  • fix: race slice for list function of ring client #2931
  • feat: support Elasticache cluster mode by setting IsClusterMode in config #3255
  • fix(redisotel): fix the situation of reporting spans multiple times #3168
  • feat: add hstrlen command for hash #2843
  • fix: Fixed issue with context cancelled error leading to connection spikes on Primary instances #3190
  • add readOnly on failover opts #3281
  • Enable dialect 2 on default #3213
  • Set client name in HELLO handshake during connection initialization #3294
  • fix: connection pool timeout, increase retries #3298
  • fix(redisotel): Show Whole Command on Tracing #3290
  • fix: handle network error on SETINFO #3295
  • Make MASTERDOWN a retriable error in RedisCluster client #3164
  • Bound connection pool background dials to configured dial timeout #3089
  • fix(command): add missing io-thread key in client info #3244
  • Fix race condition in clusterNodes.Addrs() #3219

🧰 Maintenance

🗑️ Removed

  • chore: drop RedisGears (aka. Triggers and Functions) #3321

Contributors

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

@ndyakov, @a-menshchikov, @rfyiamcool, @rentziass, @LINKIWI, @justinmir, @alingse, @EXPEbdodla, @Cgol9, @aliforever, @flc1125, @monkey92t, @jouir, @smilad, @oleglacto, @reeshijoshi, @bitsark, @shawnwgit, @ofekshenawa,
@vladvildanov, @zhuhaicity, @tomfrombayesians

@monkey92t helped a ton with PR reviews, especially related to redisotel

New Contributors

Full Changelog: v9.7.3...v9.8.0-beta.1

v9.7.3

20 Mar 14:57
a29d91d
Compare
Choose a tag to compare

What's Changed

  • fix: handle network error on SETINFO (#3295) (CVE-2025-29923)
  • Deprecating misspelled DisableIndentity flag in the client options.
  • Introducing DisableIdentity flag in the client options.
  • Updating the documentation related to the new flag and the one that was deprecated.

Full Changelog: v9.7.1...v9.7.3

v9.6.3

20 Mar 14:11
Compare
Choose a tag to compare

What's Changed

Full Changelog: v9.6.2...v9.6.3