Skip to content

Update dependency StackExchange.Redis to v3#1363

Open
renovate[bot] wants to merge 1 commit into
dev8from
renovate/stackexchange.redis-3.x
Open

Update dependency StackExchange.Redis to v3#1363
renovate[bot] wants to merge 1 commit into
dev8from
renovate/stackexchange.redis-3.x

Conversation

@renovate

@renovate renovate Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
StackExchange.Redis (source) 2.8.373.0.0 age confidence

Release Notes

StackExchange/StackExchange.Redis (StackExchange.Redis)

v3.0.0

3.0.0 represents an overhaul of the internal IO logic, for both performance and stability reasons.

Intentionally, there are no API changes in this release; it is a direct mirror of 2.13.17, but with the new IO core.

addendum, one change discovered:

  • Execute[Async] now detects and respects "admin" commands, i.e. those protected by AllowAdmin; for example, in 2.x, db.Execute("FLUSHALL"); would work even if AllowAdmin was not enabled - this will now throw at the client without issuing the command to the server

What is the aim of the internals rewrite?

SE.Redis v2 made use of a few concepts internally:

  • the "pipelines" IO layer from System.IO.Pipelines, via Pipelines.Sockets.Unoficial
  • a DOM-based parser built on top of a custom arena allocator

v3 fundamentally revises these engineering decisions:

  • IO and buffer control is taken back directly into the library, allowing for greater control of IO boundaries and the threading model
  • the parser is re-written as a reader-based implementation

This allows for significant performance improvement, especially when processing large / complex results - for example, if we use the LRANGE_600 test from redis-benchmark (or resp-benchmark):

### classic SE.Redis 2.13.17.28173 ###
LRANGE_600:     7,579 requests per second
LRANGE_600:     7,554 requests per second
LRANGE_600:     7,284 requests per second
LRANGE_600:     7,158 requests per second
LRANGE_600:     7,174 requests per second

vs

### classic SE.Redis 3.0.0.11234 ###
LRANGE_600:     16,408 requests per second
LRANGE_600:     17,681 requests per second
LRANGE_600:     17,331 requests per second
LRANGE_600:     17,317 requests per second
LRANGE_600:     16,665 requests per second

(for tests with simpler results, like INCR, results of over 1M requests per second are achievable)


3.0 is the first part of a wave of planned IO work; 3.1 will revise the "write" part of the write loop, moving message serialization out of the critical serialized core of the multiplexer. All of this work is based on extensive prototyping and benchmarking, demonstrating that these approaches, when combined, provide significant throughput and stability improvements.

This release has undergone extensive testing. If you experience problems, please let us know!

v2.13.10

Compare Source

This release is marked inactive due to a critical bug when using TCP keep-alives on DNS (i.e. named, not IP) endpoints; this is specific to non-Windows platforms, before .NET 10. See #​3086 and #​3090


What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.13.1...2.13.10

v2.13.1

Compare Source

IMPORTANT: This release changes the default protocol from RESP2 to RESP3 for Azure Managed Redis endpoints (only); this
has scalability and feature advantages, but if you are using modules or ad-hoc commands, please see the RESP3 notes, which includes:

  • the purpose of RESP3
  • scenarios where RESP2 vs RESP3 may be visible
  • how to explicitly choose to remain on RESP2
  • notes on additional libraries such as NRedisStack

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.12.27...2.13.1

v2.12.14

Compare Source

What's Changed

Impact: "high" if using cluster and high-integrity-mode together (resolves an issue that can mis-report -MOVED responses as integrity failures)

NuGet link

New Contributors

Full Changelog: StackExchange/StackExchange.Redis@2.12.8...2.12.14

v2.12.8

Compare Source

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.12.4...2.12.8

v2.12.4

Compare Source

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.12.1...2.12.4

v2.12.1

Compare Source

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.11.8...2.12.1

v2.11.8

Compare Source

What's Changed
New Contributors

Full Changelog: StackExchange/StackExchange.Redis@2.11.3...2.11.8

v2.11.3

Compare Source

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.11.0...2.11.3

v2.11.0

Compare Source

get 2.11.0 on NuGet

What's Changed

For Redis 8.6:

The time-series changes for 8.6 are over in NRedisStack 1.3.0

Other features:
Internal bits:

New Contributors

Full Changelog: StackExchange/StackExchange.Redis@2.10.14...2.11.0

v2.10.14

Compare Source

Priority: high; the backlog fix (#​3002) is rare and niche (specific to low-memory scenarios), but fixes a problem where the client can get into a non-recoverable state.

What's Changed

New Contributors

Full Changelog: StackExchange/StackExchange.Redis@2.10.1...2.10.14

v2.10.1

Adds support for Redis 8.4 features

  • support multi-string-set with expiration MSETEX ...; details controlled via new Expiration API
  • support checked string-set SET ... IFEQ/IFNE/IFDEQ/IFDNE digestOrValue; details controlled via new ValueCondition API; also uses Expiration for expiry
  • support checked string-delete DELEX ... IFEQ/IFNE/IFDEQ/IFDNE digestOrValue (again via ValueCondition)
  • use checked string-set/delete to implement LockExtend[Async]/LockRelease[Async] when possible
  • support XREADGROUP ... CLAIM minIdleTime for simplified stream processing

Note that niche StringSet[Async] scenarios may require trivial build changes due to removing default parameter values; this simplify means explicitly specifying keepTtl, or using the new Expiration API. There is no impact to already compiled code (no methods have been removed).

8.4 also includes "hybrid search"; this is not currently exposed in SE.Redis, and will be added to NRedisStack ASAP.

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.9.32...2.10.1

v2.9.32

Compare Source

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.9.25...2.9.32

v2.9.25

Compare Source

IMPORTANT: this release changes the distribution of pub/sub channels when using cluster; see 2.9.24 for more details.

What's Changed

This change is a critical fix that fixes a packaging failure in 2.9.24; for the relevant feature changes: see 2.9.24.

Full Changelog: StackExchange/StackExchange.Redis@2.9.24...2.9.25

v2.9.24

Compare Source

IMPORTANT: this release changes the distribution of pub/sub channels when using cluster:

(this change is specific to pub/sub with regular SUBSCRIBE channels, not "sharded" SSUBSCRIBE channels)

  • pre 2.9.24: all channels would always be routed similarly to key-like routing (and similar to SSUBSCRIBE)
  • from 2.9.24: non-SSUBSCRIBE channels are now randomly distributed to nodes by default, but can optionally use key-like routing by calling .WithKeyRouting() on the RedisChannel value

This change represents a safer, "least surprises" default; most people expect their cluster to help distribute load, including pub/sub load, between nodes. This is especially useful when there are few (or even only a single) channel(s) that dominate the pub/sub load, which is surprisingly common. Without this change, all that load would be handled only by a single server, because the channel my_notifications would be treated similarly to a key, via hash-slot sharding, and all clients would connect to the node serving that slot - when in reality, any node can be used for subscription, with the server distributing events horizontally to all nodes.

If you prefer the routed behaviour: use .WithKeyRouting() before subscribing.


What's Changed

New Contributors

Full Changelog: StackExchange/StackExchange.Redis@2.9.17...2.9.24

v2.9.17

Compare Source

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.9.11...2.9.17

v2.9.11

Compare Source

What's Changed

New Contributors

Full Changelog: StackExchange/StackExchange.Redis@2.8.58...2.9.11

v2.8.58

Compare Source

What's Changed

New Contributors

Full Changelog: StackExchange/StackExchange.Redis@2.8.47...2.8.58

v2.8.47

Compare Source

What's Changed

Full Changelog: StackExchange/StackExchange.Redis@2.8.41...2.8.47

v2.8.41

Compare Source

What's Changed

Sharded pub/sub operations are where the pub/sub channels are distributed over a multi-node redis cluster using similar slot rules to keys; all such operations (for both "pub" and "sub") must be communicated to the correct node. This contrasts to regular/legacy pub/sub where you can "pub" or "sub" to any node, and the message is broadcast horizontally via all nodes in the cluster. To use sharded operations, use the RedisChannel.Sharded API when constructing channels. There is no concept of pattern-based sharded pub/sub.

Full Changelog: StackExchange/StackExchange.Redis@2.8.37...2.8.41


Configuration

📅 Schedule: (in timezone Asia/Shanghai)

  • Branch creation
    • "before 1am,before 5am,before 9am"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants