Releases: StackExchange/StackExchange.Redis
Releases · StackExchange/StackExchange.Redis
2.2.88
- Change: Connection backoff default is now exponential instead of linear (#1896 by @lolodi)
- Adds: Support for
NodeMaintenanceScaleComplete
event (handles Redis cluster scaling) (#1902 by @NickCraver)
2.1.28
- Fix: Stability in new sentinel APIs
- Fix #1407: Include
SslProtocolos
inConfigurationOptions.ToString()
(#1408 by @vksampath and Sampath Vuyyuru) - Fix: Clarify messaging around disconnected multiplexers (#1396 by @NickCraver)
- Change: Tweak methods of new sentinel API (this is technically a breaking change, but since this is a new API that was pulled quickly, we consider this to be acceptable)
- Adds: New thread
SocketManager
mode (opt-in) to always use the regular thread-pool instead of the dedicated pool - Adds: Improved counters in/around error messages
- Adds: New
User
property onConfigurationOptions
- Build: Enable deterministic builds (note: this failed; fixed in 2.1.30)
2.0.600
- Adds:
ulong
support toRedisValue
andRedisResult
(#1104 by @mgravell) - Fix: Remove odd equality:
"-" != 0
(we do, however, still allow"-0"
, as that is at least semantically valid, and is logically== 0
) (related to #1103) - Performance: Rework how pub/sub queues are stored - reduces delegate overheads (related to #1101)
- Fix #1108: Ensure that we don't try appending log data to the
TextWriter
once we've returned from a method that accepted one
2.6.86
- Fix #1520 & #1660: When
MOVED
is encountered from a cluster, a reconfigure will happen proactively to react to cluster changes ASAP (#2286 by @NickCraver) - Fix #2249: Properly handle a
fail
state (newClusterNode.IsFail
property) forCLUSTER NODES
and exposefail?
as a property (IsPossiblyFail
) as well (#2288 by @NickCraver) - Adds:
IConnectionMultiplexer.ServerMaintenanceEvent
(was onConnectionMultiplexer
but not the interface) (#2306 by @NickCraver) - Adds: To timeout messages, additional debug information:
Sync-Ops
(synchronous operations),Async-Ops
(asynchronous operations), andServer-Connected-Seconds
(how long the connection in question has been connected, or"n/a"
) (#2300 by @NickCraver)
2.6.80
- Adds:
last-in
andcur-in
(bytes) to timeout exceptions to help identify timeouts that were just-behind another large payload off the wire (#2276 by @NickCraver) - Adds: general-purpose tunnel support, with HTTP proxy "connect" support included (#2274 by @mgravell)
- Removes: Package dependency (
System.Diagnostics.PerformanceCounter
) (#2285 by @NickCraver)
2.6.70
- Fix:
MOVED
withNoRedirect
(and other non-reachable errors) should respect theIncludeDetailInExceptions
setting (#2267 by @mgravell) - Fix #2251 & #2265: Cluster endpoint connections weren't proactively connecting subscriptions in all cases and taking the full connection timeout to complete as a result (#2268 by @iteplov)
2.6.66
- Fix #2182: Be more flexible in which commands are "primary only" in order to support users with replicas that are explicitly configured to allow writes (#2183 by @slorello89)
- Adds:
IConnectionMultiplexer
now implementsIAsyncDisposable
(#2161 by @kimsey0) - Adds:
IConnectionMultiplexer.GetServers()
to get allIServer
instances for a multiplexer (#2203 by @NickCraver) - Fix #2016: Align server selection with supported commands (e.g. with writable servers) to reduce
Command cannot be issued to a replica
errors (#2191 by @slorello89) - Performance: Optimization around timeout processing to reduce lock contention in the case of many items that haven't yet timed out during a heartbeat (#2217 by @NickCraver)
- Fix #2223: Resolve sync-context issues (missing
ConfigureAwait(false)
) (#2229 by @mgravell) - Fix #1968: Improved handling of EVAL scripts during server restarts and failovers, detecting and re-sending the script for a retry when needed (#2170 by @martintmk)
- Adds:
ConfigurationOptions.SslClientAuthenticationOptions
(netcoreapp3.1
/net5.0
+ only) to give more control over SSL/TLS authentication (#2224 by @NickCraver) - Fix #2240: Improve support for DNS-based IPv6 endpoints (#2241 by @NickCraver)
- Adds:
ConfigurationOptions.HeartbeatInterval
(Advanced Setting - see docs) To allow more finite control of the client heartbeat, which encompases how often command timeouts are actually evaluated - still defaults to 1,000 ms (#2243 by @NickCraver) - Fix #1879: Improve exception message when the wrong password is used (#2246 by @NickCraver)
- Fix #2233: Repeated connection to Sentinel servers using the same ConfigurationOptions would fail (#2242 by @NickCraver)
2.6.48
2.6.45
- Adds: Nullable reference type annotations (#2041 by @NickCraver)
- Adds annotations themselves for nullability to everything in the library
- Fixes a few internal edge cases that will now throw proper errors (rather than a downstream null reference)
- Fixes inconsistencies with
null
vs. empty array returns (preferring an not-null empty array in those edge cases) - Note: does not increment a major version (as these are warnings to consumers), because: they're warnings (errors are opt-in), removing obsolete types with a 3.0 rev would be binary breaking (this isn't), and reving to 3.0 would cause binding redirect pain for consumers. Bumping from 2.5 to 2.6 only for this change.
- Adds: Support for
COPY
with.KeyCopy()
/.KeyCopyAsync()
(#2064 by @Avital-Fine) - Adds: Support for
LMOVE
with.ListMove()
/.ListMoveAsync()
(#2065 by @Avital-Fine) - Adds: Support for
ZRANDMEMBER
with.SortedSetRandomMember()
/.SortedSetRandomMemberAsync()
,.SortedSetRandomMembers()
/.SortedSetRandomMembersAsync()
, and.SortedSetRandomMembersWithScores()
/.SortedSetRandomMembersWithScoresAsync()
(#2076 by @Avital-Fine) - Adds: Support for
SMISMEMBER
with.SetContains()
/.SetContainsAsync()
(#2077 by @Avital-Fine) - Adds: Support for
ZDIFF
,ZDIFFSTORE
,ZINTER
,ZINTERCARD
, andZUNION
with.SortedSetCombine()
/.SortedSetCombineAsync()
,.SortedSetCombineWithScores()
/.SortedSetCombineWithScoresAsync()
, and.SortedSetIntersectionLength()
/.SortedSetIntersectionLengthAsync()
(#2075 by @Avital-Fine) - Adds: Support for
SINTERCARD
with.SetIntersectionLength()
/.SetIntersectionLengthAsync()
(#2078 by @Avital-Fine) - Adds: Support for
LPOS
with.ListPosition()
/.ListPositionAsync()
and.ListPositions()
/.ListPositionsAsync()
(#2080 by @slorello89) - Adds: Support for
ZMSCORE
with.SortedSetScores()
/.SortedSetScoresAsync()
(#2082 by @ttingen) - Adds: Support for
NX | XX | GT | LT
toEXPIRE
,EXPIREAT
,PEXPIRE
, andPEXPIREAT
with.KeyExpire()
/.KeyExpireAsync()
(#2083 by @Avital-Fine) - Adds: Support for
EXPIRETIME
, andPEXPIRETIME
with.KeyExpireTime()
/.KeyExpireTimeAsync()
(#2083 by @Avital-Fine) - Fix: For streams, properly hash
XACK
,XCLAIM
, andXPENDING
in cluster scenarios to eliminateMOVED
retries (#2085 by @nielsderdaele) - Adds: Support for
OBJECT REFCOUNT
with.KeyRefCount()
/.KeyRefCountAsync()
(#2087 by @Avital-Fine) - Adds: Support for
OBJECT ENCODING
with.KeyEncoding()
/.KeyEncodingAsync()
(#2088 by @Avital-Fine) - Adds: Support for
GEOSEARCH
with.GeoSearch()
/.GeoSearchAsync()
(#2089 by @slorello89) - Adds: Support for
GEOSEARCHSTORE
with.GeoSearchAndStore()
/.GeoSearchAndStoreAsync()
(#2089 by @slorello89) - Adds: Support for
HRANDFIELD
with.HashRandomField()
/.HashRandomFieldAsync()
,.HashRandomFields()
/.HashRandomFieldsAsync()
, and.HashRandomFieldsWithValues()
/.HashRandomFieldsWithValuesAsync()
(#2090 by @slorello89) - Adds: Support for
LMPOP
with.ListLeftPop()
/.ListLeftPopAsync()
and.ListRightPop()
/.ListRightPopAsync()
(#2094 by @slorello89) - Adds: Support for
ZMPOP
with.SortedSetPop()
/.SortedSetPopAsync()
(#2094 by @slorello89) - Adds: Support for
XAUTOCLAIM
with.StreamAutoClaim()
/.StreamAutoClaimAsync()
and.StreamAutoClaimIdsOnly()
/.StreamAutoClaimIdsOnlyAsync()
(#2095 by @ttingen) - Fix #2071: Add
.StringSet()
/.StringSetAsync()
overloads for source compat broken for 1 case in 2.5.61 (#2098 by @NickCraver) - Fix #2086: Correct HashSlot calculations for
XREAD
andXREADGROUP
commands (#2093 by @nielsderdaele) - Adds: Support for
LCS
with.StringLongestCommonSubsequence()
/.StringLongestCommonSubsequence()
,.StringLongestCommonSubsequenceLength()
/.StringLongestCommonSubsequenceLengthAsync()
, and.StringLongestCommonSubsequenceWithMatches()
/.StringLongestCommonSubsequenceWithMatchesAsync()
(#2104 by @Avital-Fine) - Adds: Support for
OBJECT FREQ
with.KeyFrequency()
/.KeyFrequencyAsync()
(#2105 by @Avital-Fine) - Performance: Avoids allocations when computing cluster hash slots or testing key equality (#2110 by @mgravell)
- Adds: Support for
SORT_RO
with.Sort()
/.SortAsync()
(#2111 by @slorello89) - Adds: Support for
BIT | BYTE
toBITCOUNT
andBITPOS
with.StringBitCount()
/.StringBitCountAsync()
and.StringBitPosition()
/.StringBitPositionAsync()
(#2116 by @Avital-Fine) - Adds: Support for pub/sub payloads that are unary arrays (#2118 by @mgravell)
- Fix: Sentinel timer race during dispose (#2133 by @ewisuri)
- Adds: Support for
GT
,LT
, andCH
onZADD
with.SortedSetAdd()
/.SortedSetAddAsync()
and.SortedSetUpdate()
/.SortedSetUpdateAsync()
(#2136 by @Avital-Fine) - Adds: Support for
COMMAND COUNT
,COMMAND GETKEYS
, andCOMMAND LIST
, with.CommandCount()
/.CommandCountAsync()
,.CommandGetKeys()
/.CommandGetKeysAsync()
, and.CommandList()
/.CommandListAsync()
(#2143 by @shacharPash)
2.5.61
- Adds:
GETEX
support with.StringGetSetExpiry()
/.StringGetSetExpiryAsync()
(#1743 by @benbryant0) - Fix #1988: Don't issue
SELECT
commands if explicitly disabled (#2023 by @NickCraver) - Adds:
KEEPTTL
support onSET
operations (#2029 by @NickCraver) - Fix: Allow
XTRIM
MAXLEN
argument to be0
(#2030 by @NicoAvanzDev) - Adds:
ConfigurationOptions.BeforeSocketConnect
for configuring sockets between creation and connection (#2031 by @NickCraver) - Fix #1813: Don't connect to endpoints we failed to parse (#2042 by @NickCraver)
- Fix:
ClientKill
/ClientKillAsync
when usingClientType
(#2048 by @NickCraver) - Adds: Most
ConfigurationOptions
changes afterConnectionMultiplexer
connections will now be respected, e.g. changing a timeout will work and changing a password for auth rotation would be used at the next reconnect (#2050 by @NickCraver)- Obsolete: This change also moves
ConnectionMultiplexer.IncludeDetailInExceptions
andConnectionMultiplexer.IncludePerformanceCountersInExceptions
toConfigurationOptions
. The old properties are[Obsolete]
proxies that work until 3.0 for compatibility.
- Obsolete: This change also moves
- Adds: Support for
ZRANGESTORE
with.SortedSetRangeAndStore()
/.SortedSetRangeAndStoreAsync()
(#2052 by @slorello89)