Releases: StackExchange/StackExchange.Redis
Releases · StackExchange/StackExchange.Redis
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
nullvs. 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
COPYwith.KeyCopy()/.KeyCopyAsync()(#2064 by @Avital-Fine) - Adds: Support for
LMOVEwith.ListMove()/.ListMoveAsync()(#2065 by @Avital-Fine) - Adds: Support for
ZRANDMEMBERwith.SortedSetRandomMember()/.SortedSetRandomMemberAsync(),.SortedSetRandomMembers()/.SortedSetRandomMembersAsync(), and.SortedSetRandomMembersWithScores()/.SortedSetRandomMembersWithScoresAsync()(#2076 by @Avital-Fine) - Adds: Support for
SMISMEMBERwith.SetContains()/.SetContainsAsync()(#2077 by @Avital-Fine) - Adds: Support for
ZDIFF,ZDIFFSTORE,ZINTER,ZINTERCARD, andZUNIONwith.SortedSetCombine()/.SortedSetCombineAsync(),.SortedSetCombineWithScores()/.SortedSetCombineWithScoresAsync(), and.SortedSetIntersectionLength()/.SortedSetIntersectionLengthAsync()(#2075 by @Avital-Fine) - Adds: Support for
SINTERCARDwith.SetIntersectionLength()/.SetIntersectionLengthAsync()(#2078 by @Avital-Fine) - Adds: Support for
LPOSwith.ListPosition()/.ListPositionAsync()and.ListPositions()/.ListPositionsAsync()(#2080 by @slorello89) - Adds: Support for
ZMSCOREwith.SortedSetScores()/.SortedSetScoresAsync()(#2082 by @ttingen) - Adds: Support for
NX | XX | GT | LTtoEXPIRE,EXPIREAT,PEXPIRE, andPEXPIREATwith.KeyExpire()/.KeyExpireAsync()(#2083 by @Avital-Fine) - Adds: Support for
EXPIRETIME, andPEXPIRETIMEwith.KeyExpireTime()/.KeyExpireTimeAsync()(#2083 by @Avital-Fine) - Fix: For streams, properly hash
XACK,XCLAIM, andXPENDINGin cluster scenarios to eliminateMOVEDretries (#2085 by @nielsderdaele) - Adds: Support for
OBJECT REFCOUNTwith.KeyRefCount()/.KeyRefCountAsync()(#2087 by @Avital-Fine) - Adds: Support for
OBJECT ENCODINGwith.KeyEncoding()/.KeyEncodingAsync()(#2088 by @Avital-Fine) - Adds: Support for
GEOSEARCHwith.GeoSearch()/.GeoSearchAsync()(#2089 by @slorello89) - Adds: Support for
GEOSEARCHSTOREwith.GeoSearchAndStore()/.GeoSearchAndStoreAsync()(#2089 by @slorello89) - Adds: Support for
HRANDFIELDwith.HashRandomField()/.HashRandomFieldAsync(),.HashRandomFields()/.HashRandomFieldsAsync(), and.HashRandomFieldsWithValues()/.HashRandomFieldsWithValuesAsync()(#2090 by @slorello89) - Adds: Support for
LMPOPwith.ListLeftPop()/.ListLeftPopAsync()and.ListRightPop()/.ListRightPopAsync()(#2094 by @slorello89) - Adds: Support for
ZMPOPwith.SortedSetPop()/.SortedSetPopAsync()(#2094 by @slorello89) - Adds: Support for
XAUTOCLAIMwith.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
XREADandXREADGROUPcommands (#2093 by @nielsderdaele) - Adds: Support for
LCSwith.StringLongestCommonSubsequence()/.StringLongestCommonSubsequence(),.StringLongestCommonSubsequenceLength()/.StringLongestCommonSubsequenceLengthAsync(), and.StringLongestCommonSubsequenceWithMatches()/.StringLongestCommonSubsequenceWithMatchesAsync()(#2104 by @Avital-Fine) - Adds: Support for
OBJECT FREQwith.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_ROwith.Sort()/.SortAsync()(#2111 by @slorello89) - Adds: Support for
BIT | BYTEtoBITCOUNTandBITPOSwith.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, andCHonZADDwith.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:
GETEXsupport with.StringGetSetExpiry()/.StringGetSetExpiryAsync()(#1743 by @benbryant0) - Fix #1988: Don't issue
SELECTcommands if explicitly disabled (#2023 by @NickCraver) - Adds:
KEEPTTLsupport onSEToperations (#2029 by @NickCraver) - Fix: Allow
XTRIMMAXLENargument to be0(#2030 by @NicoAvanzDev) - Adds:
ConfigurationOptions.BeforeSocketConnectfor 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/ClientKillAsyncwhen usingClientType(#2048 by @NickCraver) - Adds: Most
ConfigurationOptionschanges afterConnectionMultiplexerconnections 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.IncludeDetailInExceptionsandConnectionMultiplexer.IncludePerformanceCountersInExceptionstoConfigurationOptions. The old properties are[Obsolete]proxies that work until 3.0 for compatibility.
- Obsolete: This change also moves
- Adds: Support for
ZRANGESTOREwith.SortedSetRangeAndStore()/.SortedSetRangeAndStoreAsync()(#2052 by @slorello89)
2.5.43
- Adds: Bounds checking for
ExponentialRetrybackoff policy (#1921 by @gliljas) - Adds:
DefaultOptionsProvidersupport for endpoint-based defaults configuration (#1987 by @NickCraver) - Adds: Envoy proxy support (#1989 by @rkarthick)
- Performance: When
SUBSCRIBEis disabled, give proper errors and connect faster (#2001 by @NickCraver) - Adds:
GETonSETcommand support (present in Redis 6.2+ - #2003 by @martinekvili) - Performance: Improves concurrent load performance when backlogs are utilized (#2008 by @NickCraver)
- Stability: Improves cluster connections when
CLUSTERcommand is disabled (#2014 by @tylerohlsen) - Logging: Improves connection logging and adds overall timing to it (#2019 by @NickCraver)
2.2.79
- NRediSearch: Support on json index (#1808 by @AvitalFineRedis)
- NRediSearch: Support sortable TagFields and unNormalizedForm for Tag & Text Fields (#1862 by @slorello89 & @AvitalFineRedis)
- Fix: Potential errors getting socket bytes (#1836 by @NickCraver)
- Logging: Adds (.NET Version and timestamps) for better debugging (#1796 by @philon-msft)
- Adds:
ConditionAPIs (transactions), now supportsStreamLengthEqualand variants (#1807 by @AlphaGremlin) - Adds: Support for count argument to
ListLeftPop,ListLeftPopAsync,ListRightPop, andListRightPopAsync(#1850 by @jjfmarket) - Fix: Potential task/thread exhaustion from the backlog processor (#1854 by @mgravell)
- Adds: Support for listening to Azure Maintenance Events (#1876 by @amsoedal)
- Adds:
StringGetDelete/StringGetDeleteAsyncAPIs for RedisGETDELcommand(#1840 by @WeihanLi)
2.2.62
- Stability: Sentinel potential memory leak fix in OnManagedConnectionFailed handler (#1710 by @alexSatov)
- Fix:
GetOutstandingCountcould obscure underlying faults by faulting itself (#1792 by @mgravell) - Fix #1719: With backlog messages becoming reordered (#1779 by @TimLovellSmith)
2.2.50
- Performance: Optimization for PING accuracy (#1714 by @eduardobr)
- Fix: Improvement to reconnect logic (exponential backoff) (#1735 by @deepakverma)
- Adds: Refresh replica endpoint list on failover (#1684 by @laurauzcategui)
- Fix:
ReconfigureAsyncre-entrancy (caused connection issues) ([1772 by @NickCraver) - Fix:
ReconfigureAsyncSentinel race resulting in NoConnectionAvailable when using DemandMaster (#1773 by @NickCraver) - Stability: Resolve race in AUTH and other connection reconfigurations (#1759 by @TimLovellSmith and NickCraver)
2.2.4
- Fix: Ambiguous signature of the new
RPUSHX/LPUSHXmethods (#1620 by @stefanloerwald)
2.2.3
- Adds: .NET 5 target
- Fix: Mutex race condition (#1585 by @arsnyder16)
- Adds:
CheckCertificateRevocationcan be controlled via the config string (#1591 by @lwlwalker) - Fix: Range end-value inversion (#1573 by @tombatron)
- Adds:
ROLEsupport (#1551 by @zmj) - Adds: varadic
RPUSHX/LPUSHXsupport (#1557 by @dmytrohridin) - Fix: Server-selection strategy race condition (#1532 by @deepakverma)
- Fix: Sentinel default port (#1525 by @ejsmith)
- Fix:
Int64parse scenario (#1568 by @arsnyder16) - Add: Force replication check during failover (#1563 by @aravindyeduvaka & @joroda)
- Documentation tweaks (multiple)
- Fix: Backlog contention issue (#1612 by @mgravell, see also #1574 by @devbv)
2.1.58
- Fix:
[*]SCAN- fix possible NRE scenario if the iterator is disposed with an incomplete operation in flight (by @mgravell) - Fix:
[*]SCAN- treat the cursor as an opaque value whenever possible, for compatibility withredis-cluster-proxy(by @mgravell) - Adds:
[*]SCAN- include additional exception data in the case of faults (by @mgravell)