Skip to content

Releases: StackExchange/StackExchange.Redis

2.1.30

10 Jan 21:19
Compare
Choose a tag to compare

2.1.0

10 Jan 21:15
cbe5cee
Compare
Choose a tag to compare

2.0.601

10 Jan 21:10
Compare
Choose a tag to compare
  • Adds: Tracking for current and next messages to help with debugging timeout issues - helpful in cases of large pipeline blockers

2.0.593

10 Jan 21:06
Compare
Choose a tag to compare
  • Performance: Unify spin-wait usage on sync/async paths to one competitor
  • Fix #1101: When a ChannelMessageQueue is involved, unsubscribing via any route should still unsubscribe and mark the queue-writer as complete

2.0.588

10 Jan 21:05
Compare
Choose a tag to compare
  • Stability/Performance: Resolve intermittent stall in the write-lock that could lead to unexpected timeouts even when at low/reasonable (but concurrent) load

2.0.571

10 Jan 21:05
Compare
Choose a tag to compare
  • Performance: Use new arena allocation API to avoid RawResult[] overhead
  • Performance: Massively simplified how ResultBox<T> is implemented, in particular to reduce TaskCompletionSource<T> allocations
  • Performance: Fix sync-over-async issue with async call paths, and fix the SemaphoreSlim problems that this uncovered
  • Performance: Reintroduce the unsent backlog queue, in particular to improve async performance
  • Performance: Simplify how completions are reactivated, so that external callers use their originating pool, not the dedicated IO pools (prevent thread stealing)
  • Fix: Update Pipelines.Sockets.Unofficial to prevent issue with incorrect buffer re-use in corner-case
  • Fix: KeyDeleteAsync could, in some cases, always use DEL (instead of UNLINK)
  • Fix: Last unanswered write time was incorrect
  • Change: Use higher Pipe thresholds when sending

2.0.519

10 Jan 21:04
Compare
Choose a tag to compare

2.0.513

10 Jan 21:03
Compare
Choose a tag to compare
  • Fix #961: fix assembly binding redirect problems; IMPORTANT: this drops to an older System.Buffers version - if you have manually added redirects for 4.0.3.0, you may need to manually update to 4.0.2.0 (or remove completely)
  • Fix #962: Avoid NRE in edge-case when fetching bridge

2.0.505

10 Jan 21:02
4949fc4
Compare
Choose a tag to compare
  • Fix #943: Ensure transaction inner tasks are completed prior to completing the outer transaction task
  • Fix #946: Reinstate missing TryParse methods on RedisValue
  • Fix #940: Off-by-one on pre-boxed integer cache (NRediSearch)

2.0.495

10 Jan 21:02
Compare
Choose a tag to compare

2.0 is a large - and breaking - change. The key focus of this release is stability and reliability.

  • Hard Break: The package identity has changed; instead of StackExchange.Redis (not strong-named) and StackExchange.Redis.StrongName (strong-named), we are now
    only releasing StackExchange.Redis (strong-named). This is a binary breaking change that requires consumers to be re-compiled; it cannot be applied via binding-redirects
  • Hard Break: The platform targets have been rationalized - supported targets are .NETStandard 2.0 (and above), .NETFramework 4.6.1 (and above), and .NETFramework 4.7.2 (and above)
    (note - the last two are mainly due to assembly binding problems)
  • Hard Break: The profiling API has been overhauled and simplified; full documentation is provided here
  • Soft Break: The PreserveAsyncOrder behaviour of the pub/sub API has been deprecated; a new API has been provided for scenarios that require in-order pub/sub handling -
    the Subscribe method has a new overload without a handler parameter which returns a ChannelMessageQueue, which provides async ordered access to messages)
  • Internal: The network architecture has moved to use System.IO.Pipelines; this has allowed us to simplify and unify a lot of the network code, and in particular fix a lot of problems relating to how the library worked with TLS and/or .NETStandard
  • Change: As a result of the System.IO.Pipelines change, the error-reporting on timeouts is now much simpler and clearer; the timeouts documentation has been updated
  • Removed: The HighPriority (queue-jumping) flag is now deprecated
  • Internal: Most buffers internally now make use of pooled memory; RedisValue no longer preemptively allocates buffers
  • Internal: Added new custom thread-pool for handling async continuations to avoid thread-pool starvation issues
  • Internal: All IL generation has been removed; the library should now work on platforms that do not allow runtime-emit
  • Adds: asynchronous operations now have full support for reporting timeouts
  • Adds: new APIs now exist to work with pooled memory without allocations - RedisValue.CreateFrom(MemoryStream) and operator support for Memory<byte> and ReadOnlyMemory<byte>; and IDatabase.StringGetLease[Async](...), IDatabase.HashGetLease[Async](...), Lease<byte>.AsStream())
  • Adds: "streams" support (thanks to ttingen for their contribution)
  • Adds: Various missing commands / overloads have been added; Execute[Async] for additional commands is now available on IServer
  • Fix: A lot of general bugs and issues have been resolved
  • Break: RedisValue.TryParse was accidentally omitted in the overhaul; this has been rectified and will be available in the next build

A more complete list of issues addressed can be seen in this tracking issue