Releases: StackExchange/StackExchange.Redis
Release list
3.3.1
What's Changed
- Distinguish explicit and inferred TLS host names useful when cluster shards exposed using TLS/SNI by @sandeepkunusoth in #3250
New Contributors
- @sandeepkunusoth made their first contribution in #3250
- When
SslHostis specified, it is always used for SNI - Otherwise, for endpoints discovered at runtime:
- If they are advertised with a host name, that host name is used for SNI
- Otherwise the declared host name in the configuration is used
(previously, the declared host name in configuration would take precedence over an advertised host name if SslHost was not specified)
Full Changelog: 3.3.0...3.3.1
3.3.0
Features
The primary feature in 3.3.0 is "smart-client-handoffs" (aka "hitless"), whereby the client responds to server maintenance notifications on suitable environments. This feature is currently opt-in, and is planned to be automatic (opt-out) in most supported cases in an upcoming release.
Opt in through configuration;
my-redis.internal.example.com:6379,maintNotifications=Auto
or in code:
options.MaintenanceNotifications = MaintenanceNotificationMode.Auto;Changes
- Server-native maintenance notifications: opt in, react, hand off, and recover when nothing is announced by @mgravell in #3191
Maintenance
- Sort the public API tracking files, with a script that keeps them that way by @mgravell in #3245
- Promote geo-redundant failover and the Redis 8.10 bindings out of preview by @mgravell in #3247
- Retire SER001: vector sets are not experimental any more by @mgravell in #3246
Full Changelog: 3.2.15...3.3.0
3.2.15
What's Changed
connection stability
- A fully-down connection group throws RedisConnectionException (#3223) by @mgravell in #3224
- SwitchPrimary retires the servers its rebuild drops by @mgravell in #3225
- Make fallback discovery and keep-alive probes cluster-slot aware by @HarnageaGabriel in #3185
- Fix Sentinel connection leak and AbortOnConnectFail=false handling by @HarnageaGabriel in #3187
- Fix a vacuous cluster-probe assertion, and pin the first-handshake residue by @mgravell in #3226
- A tracer redirect proves liveness, so it completes the handshake by @mgravell in #3227
- Dial a cluster node before waiting for it to connect by @mgravell in #3238
fixes
- Compare strings against blobs without decoding them into a string by @mgravell in #3228
- IServer.Execute supplies the default database rather than refusing the command by @mgravell in #3237
background / engineering
- CI: resolve the NuGet cache key once, so the post step never walks the tree by @mgravell in #3231
- Close the test-suite gaps from #3234 by @mgravell in #3235
- Point the obsolete messages at 4.0, since 3.2 has shipped without them by @mgravell in #3244
- Drop explicit Microsoft.SourceLink.GitHub reference by @mgravell in #3222
Full Changelog: 3.2.1...3.2.15
3.2.1
3.2.0
Highlights
- .NET 6 dropped from TFMs; .NET 6 users will still get support via .NET Standard, but note that this does not include unix domain socket endpoint support
- Add
BITFIELDsupport - Add
EVAL_RO/EVALSHA_ROsupport (gated by server-version) - New
ExecuteRespandScriptEvaluateRespAPIs for performing ad-hoc commands much more efficiently - Stability and performance fixes
- Cluster definition moved from
CLUSTER NODEStoCLUSTER SLOTS, improving life-cycle and identity
What's Changed
- Route from CLUSTER SLOTS, and give endpoints a lifecycle by @mgravell in #3177
- Return 0 from SortedSetRemove(Async) for an empty member array by @AbhinavMir in #3192
- Tests: don't assume endpoint discovery is synchronous with connect by @mgravell in #3197
- Fill in the neglected bitmap commands: BITFIELD, and an open-ended BITPOS by @mgravell in #3196
- Tests: pin the pruning threshold deterministically, not end-to-end by @mgravell in #3198
- add Dragonfly to ProductVariant by @pairbit in #3199
- Never match responses on a connection whose write failed mid-flight by @mgravell in #3205
- Drop net6.0 from TargetFrameworks by @mgravell in #3208
- add ReadOnlyMemory and Lease for Lua and Execute by @pairbit in #3201
- Sync path must wait for completion, not merely for a fault by @mgravell in #3212
- For ROM-based APIs (mostly ScriptEvaluate/Execute): render request keys and values into one pooled buffer up front by @mgravell in #3211
- Add ExecuteResp vs Execute allocation/time benchmark by @mgravell in #3215
- Prevent response queue writes during connection teardown by @jetersen in #3200
Background work
- Bump SourceLink past CVE-2026-62900, and System.IO.Hashing with it by @mgravell in #3210
- Bump to 3.2 by @mgravell in #3214
- Ship 3.2.0 API surface and target the build at 3.2.0 by @mgravell in #3216
- Move package publishing from MyGet to NuGet trusted publishing by @mgravell in #3213
- CI: hash the NuGet cache key before starting redis, not after by @mgravell in #3209
- Stop the docs site collecting 404s from mangled links by @mgravell in #3190
- Fix tag-triggered releases: accept unprefixed tags, keep 3.2.0 reachable by @mgravell in #3217
New Contributors
- @AbhinavMir made their first contribution in #3192
- @jetersen made their first contribution in #3200
Full Changelog: 3.1.31...3.2.0
3.1.31
What's Changed
Features
- Always issue HELLO when the server should understand it, not just for RESP3 by @mgravell in #3175
- Fix two RESP3 connect failure modes: credential desync (#3172) and subscription poisoning on downgrade (#3154) by @mgravell in #3176
- Add NOMKSTREAM/MINID support to XADD by @HarnageaGabriel in #3186
- Add SER305/SER306: waiting for a queued transaction result by @mgravell in #3178
- Add SER307 (sync over async), and a DedicatedThreads opt-in by @mgravell in #3179
- Add SER308: flag the library's own Wait/WaitAll/TryWait helpers by @mgravell in #3180
Internal bits
- Treat a write losing its connection as a closure, not an internal fault (#3167) by @mgravell in #3189
- Preparation work for smart-client-handoffs by @mgravell in #3174
- Support transport feeds by @mgravell in #3173
- Transport seam: start reading before the handshake, and report a tunnel's refusal by @mgravell in #3188
Auxiliary bits
- Benchmark: support -c correctly by @mgravell in #3170
- Stabilize Windows CI by @mgravell in #3168
- Cut the CI build time: analyzers once per project, cache NuGet by @mgravell in #3171
- Point documentation links at seredis.dev by @mgravell in #3181
- Add a Jekyll config for the docs site, and switch to Cayman by @mgravell in #3182
- Docs site: title duplication, stray underlines, favicon by @mgravell in #3183
New Contributors
- @HarnageaGabriel made their first contribution in #3186
Full Changelog: 3.1.13...3.1.31
3.1.13
What's Changed
- Add possibility to use different passwords for Sentinel and Redis host (#1698) by @doosterkamp in #3140
- Transaction analyzer: fix local functions / lambdas by @mgravell in #3166
New Contributors
- @doosterkamp made their first contribution in #3140
Full Changelog: 3.1.11...3.1.13
3.1.11
What's Changed
- fix event-invocation on AOT targets by @mgravell in #3158
- fix
KeyTypehandling of "none" by @mgravell in #3160 - config strings:
!@nameis a Linux abstract Unix socket by @mgravell in #3165 - transaction to atomic analyzer by @mgravell in #3162
WithRetry: implement fine-grained (arg-specific) command retry categories by @mgravell in #3161
Internal pieces
- add security policy by @mgravell in #3155
- experimental tunnel API for out-of-package network transports by @mgravell in #3152
- move stream/buffer core to RESPite as the single copy by @mgravell in #3153
Full Changelog: 3.1.3...3.1.11
3.1.3
This release should be considered a minor tweak to the much more significant 3.1.0 - please see the release notes for 3.1.0.
What's Changed
WithRetry().CreateTransaction(...)should: ITransactionby @mgravell in #3151- Update PackageReleaseNotes by @martincostello in #3146
- fix python multidb link by @mgravell in #3149
New Contributors
- @martincostello made their first contribution in #3146
Full Changelog: 3.1.0...3.1.3
3.1.0
What's Changed
This is a major feature, with extensive documentation.
Note that it currently has an [Experimental] marker, linking here, but: this is purely for an abundance of caution; it is considered released and fully supported.
(engineering)
- CI: stop dpkg starting redis-server (Windows/WSL install hang on 8.10) by @mgravell in #3145
- Make the previous "we will remove this in 3.0" features errors rather than warnings, and reframe as "...in 3.2"
available on NuGet
Full Changelog: 3.0.25...3.1.0