Skip to content

Releases: StackExchange/StackExchange.Redis

2.6.66

10 Jan 21:53
d1b802b
Compare
Choose a tag to compare
  • 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 implements IAsyncDisposable (#2161 by @kimsey0)
  • Adds: IConnectionMultiplexer.GetServers() to get all IServer 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

10 Jan 21:51
0ebe530
Compare
Choose a tag to compare
  • URGENT Fix: #2167, #2176: fix error in batch/transaction handling that can result in out-of-order instructions (#2177 by @mgravell)
  • Fix: #2164: fix LuaScript.Prepare for scripts that don't have parameters (#2166 by @mgravell)

2.6.45

10 Jan 21:50
Compare
Choose a tag to compare
  • 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, and ZUNION 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 to EXPIRE, EXPIREAT, PEXPIRE, and PEXPIREAT with .KeyExpire()/.KeyExpireAsync() (#2083 by @Avital-Fine)
  • Adds: Support for EXPIRETIME, and PEXPIRETIME with .KeyExpireTime()/.KeyExpireTimeAsync() (#2083 by @Avital-Fine)
  • Fix: For streams, properly hash XACK, XCLAIM, and XPENDING in cluster scenarios to eliminate MOVED 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 and XREADGROUP 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 to BITCOUNT and BITPOS 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, and CH on ZADD with .SortedSetAdd()/.SortedSetAddAsync() and .SortedSetUpdate()/.SortedSetUpdateAsync() (#2136 by @Avital-Fine)
  • Adds: Support for COMMAND COUNT, COMMAND GETKEYS, and COMMAND LIST, with .CommandCount()/.CommandCountAsync(), .CommandGetKeys()/.CommandGetKeysAsync(), and .CommandList()/.CommandListAsync() (#2143 by @shacharPash)

2.5.61

10 Jan 21:46
b159173
Compare
Choose a tag to compare
  • 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 on SET operations (#2029 by @NickCraver)
  • Fix: Allow XTRIM MAXLEN argument to be 0 (#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 using ClientType (#2048 by @NickCraver)
  • Adds: Most ConfigurationOptions changes after ConnectionMultiplexer 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 and ConnectionMultiplexer.IncludePerformanceCountersInExceptions to ConfigurationOptions. The old properties are [Obsolete] proxies that work until 3.0 for compatibility.
  • Adds: Support for ZRANGESTORE with .SortedSetRangeAndStore()/.SortedSetRangeAndStoreAsync() (#2052 by @slorello89)

2.5.43

10 Jan 21:45
a2a5ac6
Compare
Choose a tag to compare
  • Adds: Bounds checking for ExponentialRetry backoff policy (#1921 by @gliljas)
  • Adds: DefaultOptionsProvider support for endpoint-based defaults configuration (#1987 by @NickCraver)
  • Adds: Envoy proxy support (#1989 by @rkarthick)
  • Performance: When SUBSCRIBE is disabled, give proper errors and connect faster (#2001 by @NickCraver)
  • Adds: GET on SET command 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 CLUSTER command is disabled (#2014 by @tylerohlsen)
  • Logging: Improves connection logging and adds overall timing to it (#2019 by @NickCraver)

2.2.79

10 Jan 21:40
ef1178e
Compare
Choose a tag to compare
  • 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: Condition APIs (transactions), now supports StreamLengthEqual and variants (#1807 by @AlphaGremlin)
  • Adds: Support for count argument to ListLeftPop, ListLeftPopAsync, ListRightPop, and ListRightPopAsync (#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/StringGetDeleteAsync APIs for Redis GETDEL command(#1840 by @WeihanLi)

2.2.62

10 Jan 21:39
Compare
Choose a tag to compare
  • Stability: Sentinel potential memory leak fix in OnManagedConnectionFailed handler (#1710 by @alexSatov)
  • Fix: GetOutstandingCount could obscure underlying faults by faulting itself (#1792 by @mgravell)
  • Fix #1719: With backlog messages becoming reordered (#1779 by @TimLovellSmith)

2.2.50

10 Jan 21:31
c28d78a
Compare
Choose a tag to compare
  • 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: ReconfigureAsync re-entrancy (caused connection issues) ([1772 by @NickCraver)
  • Fix: ReconfigureAsync Sentinel 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

10 Jan 21:29
Compare
Choose a tag to compare

2.2.3

10 Jan 21:28
159ce66
Compare
Choose a tag to compare