9.15.0-beta.1
This beta release includes a pre-production version of processing push notifications and 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.
- [CAE-1088] & [CAE-1072] feat: RESP3 notifications support & Hitless notifications handling (#3418)
We'd like to thank all the contributors who worked on this release!
9.14.0
- Added batch process method to the pipeline (#3510)
- Added batch process method to the pipeline (#3510)
- fix: SetErr on Cmd if the command cannot be queued correctly in multi/exec (#3509)
- Updates release drafter config to exclude dependabot (#3511)
- chore(deps): bump actions/setup-go from 5 to 6 (#3504)
We'd like to thank all the contributors who worked on this release!
9.13.0
- Pipeliner expose queued commands (#3496)
- Ensure that JSON.GET returns Nil response (#3470)
- Fixes on Read and Write buffer sizes and UniversalOptions
- 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)
- fix(otel): register wait metrics (#3499)
- Support subscriptions against cluster slave nodes (#3480)
- Add wait metrics to otel (#3493)
- Clean failing timeout implementation (#3472)
- Do not assume that all non-IP hosts are loopbacks (#3085)
- Ensure that JSON.GET returns Nil response (#3470)
- 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)
We'd like to thank all the contributors who worked on this release!
@LINKIWI, @cxljs, @cybersmeashish, @elena-kolevska, @htemelski-redis, @mwhooker, @ndyakov, @ofekshenawa, @suever
9.12.1
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.
- fix(options): Add buffer sizes to failover. Update README (#3468)
- fix(options): Add buffer sizes to failover. Update README (#3468)
- chore: update & fix otel example (#3466)
We'd like to thank all the contributors who worked on this release!
@ndyakov and @vmihailenco
9.12.0
- 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 inFT.VSIM
. - Includes bug fixes and improvements contributed by the community related to ring and redisotel.
- 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)
- 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)
- 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)
- 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)
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
9.12.0-beta.1
- 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 inFT.VSIM
. - Includes bug fixes and improvements related to search and community contributions for redisotel.
- 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)
- 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)
- fix(search): return results even if doc is empty (#3457)
- [ISSUE-3402]: Ring.Pipelined return dial timeout error (#3403)
- DOC-5472 time series doc examples (#3443)
- Add VAMANA compression algorithm tests (#3461)
- bumped redis 8.2 version used in the CI/CD (#3451)
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
- @htemelski-redis made their first contribution in https://github.com/redis/go-redis/pull/3409
- @smnvdev made their first contribution in https://github.com/redis/go-redis/pull/3403
- @rokn made their first contribution in https://github.com/redis/go-redis/pull/3444
9.11.0
Fixes TxPipeline
to work correctly in cluster scenarios, allowing execution of commands only in the same slot for a given transaction.
- Set cluster slot for
scan
commands, rather than random (#2623) - Add CredentialsProvider field to UniversalOptions (#2927)
- feat(redisotel): add WithCallerEnabled option (#3415)
- 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)
- feat: optimize connection pool waitTurn (#3412)
- chore(ci): update CI redis builds (#3407)
- chore: remove a redundant method from
Ring
,Client
andClusterClient
(#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)
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
Experimental support for vector sets!
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.
We'd like to thank all the contributors who worked on this release!
9.9.0
- Token-based Authentication: Added
StreamingCredentialsProvider
for dynamic credential updates (experimental)- Can be used with go-redis-entraid for Azure AD authentication
- 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
- 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:
- Added Ring client shard access methods:
GetShardClients()
to retrieve all active shard clientsGetShardClientForKey(key string)
to get the shard client for a specific key (#3388)
- 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)
- Updated documentation for XINFO GROUPS with nil lag support (#3369)
- Added package-level comments for new features
- Optimized
ReplaceSpaces
function (#3383) - Set default value for
Options.Protocol
ininit()
(#3387) - Exported pool errors for public consumption (#3380)
- Updated Redis CI to version 8.0.1 (#3372)
- Updated spellcheck GitHub Actions (#3389)
- Removed unused parameters (#3382, #3384)
- Added unit tests for pool acquisition timeout (#3381)
- Added unit tests for utility functions (#3377)
We would like to thank all the contributors who made this release possible:
@ndyakov, @ofekshenawa, @LINKIWI, @iamamirsalehi, @fukua95, @lzakharov, @DengY11
For a complete list of changes, see the full changelog.
v9.8.0
- 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
) andHSTRLEN
command - Search Improvements: Enabled Search DIALECT 2 by default and added
CountOnly
argument forFT.Search
- 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 frompool.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 forFT.Search
to useLIMIT 0 0
(#3338) - Added
DB
option support inNewFailoverClusterClient
(#3342) - Added
nil
check for the options when creating a client (#3363)
- 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 addedCountOnly
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)
- 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
andSMEMBERS
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)
- Bound connection pool background dials to configured dial timeout (#3089)
- Ensured context isn't exhausted via concurrent query (#3334)
- Updated testing image to Redis 8.0-RC2 (#3361)
- Enabled CI for Redis CE 8.0 (#3274)
- Updated various dependencies:
- Migrated golangci-lint configuration to v2 format (#3354)
- Enabled Search DIALECT 2 by default (#3213)
- Dropped RedisGears (Triggers and Functions) support (#3321)
- Dropped FT.PROFILE command that was never enabled (#3323)
- Fixed network error handling on SETINFO (CVE-2025-29923) (#3295)
- 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)
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