Skip to content

Releases: redis/go-redis

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

v9.5.5

20 Mar 14:08
Compare
Choose a tag to compare

What's Changed

Full Changelog: v9.5.4...v9.5.5

v9.7.1

21 Feb 13:46
3d041a1
Compare
Choose a tag to compare

Changes

  • Recognize byte slice for key argument in cluster client hash slot computation (#3049)
  • fix(search&aggregate):fix error overwrite and typo #3220 (#3224)
  • fix: linter configuration (#3279)
  • fix(search): if ft.aggregate use limit when limitoffset is zero (#3275)
  • Reinstate read-only lock on hooks access in dialHook to fix data race (#3225)
  • fix: flaky ClientKillByFilter test (#3268)
  • chore: fix some comments (#3226)
  • fix(aggregate, search): ft.aggregate bugfixes (#3263)
  • fix: add unstableresp3 to cluster client (#3266)
  • Fix race condition in clusterNodes.Addrs() (#3219)
  • SortByWithCount FTSearchOptions fix (#3201)
  • Eliminate redundant dial mutex causing unbounded connection queue contention (#3088)
  • Add guidance on unstable RESP3 support for RediSearch commands to README (#3177)

🚀 New Features

  • Add guidance on unstable RESP3 support for RediSearch commands to README (#3177)

🐛 Bug Fixes

  • fix(search): if ft.aggregate use limit when limitoffset is zero (#3275)
  • fix: add unstableresp3 to cluster client (#3266)
  • fix(aggregate, search): ft.aggregate bugfixes (#3263)
  • SortByWithCount FTSearchOptions fix (#3201)
  • Recognize byte slice for key argument in cluster client hash slot computation (#3049)

Contributors

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

@ofekshenawa, @Cgol9, @LINKIWI, @shawnwgit, @zhuhaicity, @bitsark, @vladvildanov, @ndyakov

Full Changelog: v9.7.0...v9.7.1

9.7.0

17 Oct 09:58
ed37c33
Compare
Choose a tag to compare

Changes

🚀 New Features

  • Support Redis search and query capabilities (#2801, #3098)
  • Support indexing and querying empty values (#3053)
  • Support for Redis JSON with RESP2 protocol (#3146)

🛠️ Improvements

We're glad to announce that we added a search and query support in the current release.

🧰 Maintenance

Contributors

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

@andy-stark-redis, @ipechorin, @ofekshenawa and @vladvildanov

9.6.2

14 Oct 11:28
2a6c4c2
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

  • Fixed bug with broken TLS sessions (#3145)

Contributors

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

@ofekshenawa @vladvildanov @rentziass

9.7.0-beta.1

26 Sep 10:33
ad131f4
Compare
Choose a tag to compare
9.7.0-beta.1 Pre-release
Pre-release

Changes

🚀 New Features

  • Support Redis search and query capabilities (#2801, #3098)
  • Support indexing and querying empty values (#3053)

🛠️ Improvements

We're glad to announce that we added a search and query support in the current release.

🧰 Maintenance

Contributors

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

@andy-stark-redis, @ipechorin, @ofekshenawa and @vladvildanov

9.6.1

25 Jul 08:09
c3610cd
Compare
Choose a tag to compare

Changes

9.6

This release contains all new features from version 9.6.

🚀 New Features

  • Support Hash-field expiration commands (#2991)
  • Support Hash-field expiration commands in Pipeline & Fix HExpire HExpireWithArgs expiration (#3038)
  • Support NOVALUES parameter for HSCAN (#2925)
  • Added test case for CLIENT KILL with MAXAGE option (#2971)
  • Add support for XREAD last entry (#3005)
  • Reduce the type assertion of CheckConn (#3066)

9.6.1

In addition minor changes were performed to retract version 9.5.3 and 9.5.4 that were released accidentally.

🧰 Maintenance

  • Change CI to 7.4.0-RC2 (#3070)

🎁 Package Distribution

  • Retract versions 9.5.3 and 9.5.4 (#3069)

Contributors

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

@LINKIWI, @b1ron, @gerzse, @haines, @immersedin, @naiqianz, @ofekshenawa, @srikar-jilugu, @tzongw, @vladvildanov, @vmihailenco and @monkey92t