Releases: StackExchange/StackExchange.Redis
Releases · StackExchange/StackExchange.Redis
2.7.17
What's Changed
- Fix: #2321: Honor disposition of select command in Command Map for transactions (#2322 by @slorello89)
- Fix #2619: Type-forward
IsExternalInit
to support down-level TFMs (#2621 by @mgravell) InternalsVisibleTo
PublicKey
enhancements(#2623 by @WeihanLi)- Fix #2576: Prevent
NullReferenceException
during shutdown of connections (#2629 by @NickCraver)
Full Changelog: 2.7.10...2.7.17
2.7.10
- Fix #2593:
EXPIRETIME
andPEXPIRETIME
miscategorized asPrimaryOnly
commands causing them to fail when issued against a read-only replica (#2593 by @slorello89) - Fix #2591: Add
HELLO
to Sentinel connections so they can support RESP3 (#2601 by @NickCraver) - Fix #2595: Add detection handling for dead sockets that the OS says are okay, seen especially in Linux environments (#2610 by @NickCraver)
Full Changelog: 2.7.4...2.7.10
2.7.4
- Add: RESP3 support (#2396 by @mgravell) - see https://stackexchange.github.io/StackExchange.Redis/Resp3
- Fix #2507: Pub/sub with multi-item payloads should be usable (#2508 by @mgravell)
- Add: connection-id tracking (internal only, no public API) (#2508 by @mgravell)
- Add:
ConfigurationOptions.LoggerFactory
for logging to anILoggerFactory
(e.g.ILogger
) all connection and error events (#2051 by @NickCraver) - Fix #2467: Add StreamGroupInfo EntriesRead and Lag (#2510 by @tvdias)
Full Changelog: https://github.com/StackExchange/StackExchange.Redis/compare/2.6.122..2.7.4
2.6.122
- Change: Target net6.0 instead of net5.0, since net5.0 is end of life. (#2497 by @eerhardt)
- Fix: Fix nullability annotation of IConnectionMultiplexer.RegisterProfiler (#2494 by @eerhardt)
- Add:
Timer.ActiveCount
underPOOL
in timeout messages on .NET 6+ to help diagnose timer overload affecting timeout evaluations (#2500 by @NickCraver) - Add:
LibraryName
configuration option; allows the library name to be controlled at the individual options level (in addition to the existing controls inDefaultOptionsProvider
) (#2502 by @mgravell) - Add:
DefaultOptionsProvider.GetProvider
allows lookup of provider by endpoint (#2502 by @mgravell)
Full Changelog: 2.6.116...2.6.122
2.6.116
- Fix #2479: Add
RedisChannel.UseImplicitAutoPattern
(global) andRedisChannel.IsPattern
(#2480 by @mgravell) - Fix #2479: Mark
RedisChannel
conversion operators as obsolete; addRedisChannel.Literal
andRedisChannel.Pattern
helpers (#2481 by @mgravell) - Fix #2449: Update
Pipelines.Sockets.Unofficial
tov2.2.8
to support native AOT (#2456 by @eerhardt)
Full Changelog: 2.6.111...2.6.116
2.6.111
- Fix #2426: Don't restrict multi-slot operations on Envoy proxy; let the proxy decide (#2428 by @mgravell)
- Add: Support for
User
/Password
inDefaultOptionsProvider
to support token rotation scenarios (#2445 by @NickCraver) - Fix #2449: Resolve AOT trim warnings in
TryGetAzureRoleInstanceIdNoThrow
(#2451 by @eerhardt) - Adds: Support for
HTTP/1.1 200 Connection established
in HTTP Tunnel (#2448 by @flobernd) - Adds: Timeout duration to backlog timeout error messages (#2452 by @NickCraver)
- Adds:
DefaultOptionsProvider.LibraryName
for specifying lib-name passed toCLIENT SETINFO
in Redis 7.2+ (#2453 by @NickCraver)
New Contributors
Full Changelog: 2.6.104...2.6.111
2.6.104
- Fix #2412: Critical (but rare) GC bug that can lead to async tasks never completing if the multiplexer is not held by the consumer (#2408 by @mgravell)
- Fix #2392: Dequeue all timed out messages from the backlog when not connected (including Fire+Forget) (#2397 by @kornelpal)
- Fix #2400: Expose
ChannelMessageQueue
asIAsyncEnumerable<ChannelMessage>
(#2402 by @mgravell) - Adds: Better error messages (over generic timeout) when commands are backlogged and unable to write to any connection (#2408 by @NickCraver)
- Adds: Support for
CLIENT SETINFO
(lib name/version) during handshake; opt-out is viaConfigurationOptions
; also support read ofresp
,lib-ver
andlib-name
viaCLIENT LIST
(#2414 by @mgravell) - Documentation: clarify the meaning of
RedisValue.IsInteger
re #2418 (#2420 by @mgravell)
New Contributors
- @SonnyRR made their first contribution in #2410
- @kornelpal made their first contribution in #2397
Full Changelog: 2.6.96...2.6.104
2.6.96
- Fix #2350: Properly parse lua script paramters in all cultures (#2351 by @NickCraver)
- Fix #2362: Set
RedisConnectionException.FailureType
toAuthenticationFailure
on all authentication scenarios for better handling (#2367 by @NickCraver) - Fix #2368: Support
RedisValue.Length()
for all storage types (#2370 by @mgravell) - Fix #2376: Avoid a (rare) deadlock scenario (#2378 by @mgravell)
Full Changelog: 2.6.90...2.6.96
2.6.90
- Adds: Support for
EVAL_RO
andEVALSHA_RO
viaIDatabase.ScriptEvaluateReadOnly
/IDatabase.ScriptEvaluateReadOnlyAsync
(#2168 by @shacharPash) - Fix #1458: Fixes a leak condition when a connection completes on the TCP phase but not the Redis handshake (#2238 by @NickCraver)
- Internal: ServerSnapshot: Improve API and allow filtering with custom struct enumerator (#2337 by @mgravell)
2.5.27
- Adds: a backlog/retry mechanism for commands issued while a connection isn't available (#1912 by @NickCraver)
- Commands will be queued if a multiplexer isn't yet connected to a Redis server.
- Commands will be queued if a connection is lost and then sent to the server when the connection is restored.
- All commands queued will only remain in the backlog for the duration of the configured timeout.
- To revert to previous behavior, a new
ConfigurationOptions.BacklogPolicy
is available - old behavior is configured viaoptions.BacklogPolicy = BacklogPolicy.FailFast
. This backlogs nothing and fails commands immediately if no connection is available.
- Adds: Makes
StreamEntry
constructor public for better unit test experience (#1923 by @WeihanLi) - Fix: Integer overflow error (issue #1926) with 2GiB+ result payloads (#1928 by @mgravell)
- Change: Update assumed redis versions to v2.8 or v4.0 in the Azure case (#1929 by @NickCraver)
- Fix: Profiler showing
EVAL
insteadEVALSHA
(#1930 by @martinpotter) - Performance: Moved tiebreaker fetching in connections into the handshake phase (streamline + simplification) (#1931 by @NickCraver)
- Stability: Fixed potential disposed object usage around Arenas (pulling in Piplines.Sockets.Unofficial#63 by @mgravell)
- Adds: Thread pool work item stats to exception messages to help diagnose contention (#1964 by @NickCraver)
- Fix/Performance: Overhauls pub/sub implementation for correctness (#1947 by @NickCraver)
- Fixes a race in subscribing right after connected
- Fixes a race in subscribing immediately before a publish
- Fixes subscription routing on clusters (spreading instead of choosing 1 node)
- More correctly reconnects subscriptions on connection failures, including to other endpoints
- Adds "(vX.X.X)" version suffix to the default client ID so server-side
CLIENT LIST
can more easily see what's connected (#1985 by @NickCraver) - Fix: Properly including or excluding key names on some message failures (#1990 by @NickCraver)
- Fix: Correct return of nil results in
LPOP
,RPOP
,SRANDMEMBER
, andSPOP
(#1993 by @NickCraver)