Skip to content

Releases: StackExchange/StackExchange.Redis

2.6.45

10 Jan 21:50

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

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

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

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

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

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

Choose a tag to compare

2.2.3

10 Jan 21:28
159ce66

Choose a tag to compare

2.1.58

10 Jan 21:26

Choose a tag to compare

  • 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 with redis-cluster-proxy (by @mgravell)
  • Adds: [*]SCAN - include additional exception data in the case of faults (by @mgravell)

2.1.55

10 Jan 21:25

Choose a tag to compare

  • Adds: Identification of assembly binding problem on .NET Framework. Drops System.IO.Pipelines to 4.7.1, and identifies new System.Buffers binding failure on 4.7.2 (by @mgravell)