Changelog History
Page 2
-
v2.11.0 Changes
February 11, 2026๐ฆ get 2.11.0 on NuGet
What's Changed
๐ For Redis 8.6:
- ๐ (docs) Add support for write-at-most-once with streams by @mgravell in #3006
- ๐ (docs) Add support for
HOTKEYSby @mgravell in #3008 - ๐ (docs) Add documentation for client certificate authentication by @mgravell in #3009
๐ The time-series changes for 8.6 are over in NRedisStack 1.3.0
Other features:
- ๐ (docs) Add support for keyspace notifications including cluster support by @mgravell in #2995
- โก๏ธ Update README to include Azure Managed Redis by @redis-phil in #3005
Internal bits:
- Options: Split out AMR to its own options provider by @NickCraver in #2986
- โก๏ธ Update CI to 8.6 by @mgravell in #3010
๐ New Contributors
- @redis-phil made their first contribution in #3005
Full Changelog : 2.10.14...2.11.0
-
v2.10.14 Changes
February 04, 2026Priority: 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
- ๐ fix: Handle Backlog Processor Startup Failures by @nathan-miller23 in #3002
- ๐ fix: Propagate PhysicalBridge backlog to ServerCounters by @nathan-miller23 in #2996
- ๐ fix incorrect debug assertion in
HGETEX; no impact to release build by @mgravell in #2999 - ๐ท (eng) CI trivia - docker image, codeql, enable manual CI runs (@mgravell)
๐ New Contributors
- @nathan-miller23 made their first contribution in #2996
Full Changelog : 2.10.1...2.10.14
-
v2.10.1 Changes
November 06, 2025โ Adds support for Redis 8.4 features
- ๐ support multi-string-set with expiration
MSETEX ...; details controlled via newExpirationAPI - ๐ support checked string-set
SET ... IFEQ/IFNE/IFDEQ/IFDNE digestOrValue; details controlled via newValueConditionAPI; also usesExpirationfor expiry - ๐ support checked string-delete
DELEX ... IFEQ/IFNE/IFDEQ/IFDNE digestOrValue(again viaValueCondition) - ๐ use checked string-set/delete to implement
LockExtend[Async]/LockRelease[Async]when possible - ๐ support
XREADGROUP ... CLAIM minIdleTimefor simplified stream processing
๐ Note that niche
StringSet[Async]scenarios may require trivial build changes due to removing default parameter values; this simplify means explicitly specifyingkeepTtl, or using the newExpirationAPI. 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
- ๐ณ docker image: use client-libs-test by @mgravell in #2976
- ๐ Support MSETEX by @mgravell in #2977
- ๐ propose support for XREADGROUP CLAIM by @mgravell in #2972
- ๐ Support 8.4 CAS/CAD (IF*) operations by @mgravell in #2978
- Combine fixups from 8.4 changes by @mgravell in #2979
Full Changelog : 2.9.32...2.10.1
- ๐ support multi-string-set with expiration
-
v2.9.32 Changes
October 13, 2025What's Changed
- ๐ Fix sharded pub/sub handling over slot migrations by @mgravell in #2969
- ๐ (build) "actions": support publishing to MyGet off main branch by @NickCraver in #2964
- โก๏ธ (build) Update CI badge by @mgravell in #2967
Full Changelog : 2.9.25...2.9.32
-
v2.9.25 Changes
September 29, 2025๐ 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 : 2.9.24...2.9.25
-
v2.9.24 Changes
September 26, 2025๐ IMPORTANT: this release changes the distribution of pub/sub channels when using cluster:
(this change is specific to pub/sub with regular
SUBSCRIBEchannels, not "sharded"SSUBSCRIBEchannels)- pre 2.9.24: all channels would always be routed similarly to key-like routing (and similar to
SSUBSCRIBE) - from 2.9.24: non-
SSUBSCRIBEchannels are now randomly distributed to nodes by default, but can optionally use key-like routing by calling.WithKeyRouting()on theRedisChannelvalue
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_notificationswould 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
- ๐ Fix 2951 - Sentinel reconnect failure by @mgravell in #2956
- โ Remove supported Envoyproxy commands from exclusions. by @sshumakov in #2957
- Convert to Hex only on Encoding.UTF8.GetString possible exceptions by @jcaspes in #2954
- eng: prefer Volatile.Read over Thread.VolatileRead by @mgravell in #2960
- โช Channel routing: revert normal (non-
SSUBSCRIBE) routing to random, with newWithKeyRouting()API to opt into routed by @mgravell in #2958
๐ New Contributors
- @sshumakov made their first contribution in #2957
- @jcaspes made their first contribution in #2954
Full Changelog : 2.9.17...2.9.24
- pre 2.9.24: all channels would always be routed similarly to key-like routing (and similar to
-
v2.9.17 Changes
September 10, 2025What's Changed
- โ Add vector-set support by @mgravell in #2939
- ๐ fix: RedisValue/RedisResult: cast to double should respect special values by @mgravell in #2950
- Internals:
Full Changelog : 2.9.11...2.9.17
-
v2.9.11 Changes
August 20, 2025What's Changed
๐ Features and fixes
- Add
HGETDEL,HGETEXandHSETEXsupport (#2863 by atakavci) - Add
Condition.SortedSet[Not]ContainsStartingcondition for transactions (#2638 by ArnoKoll) - Add support for
XPENDING IDLEtime filter (#2822 by david-brink-talogy) - Add
GetServer(RedisKey, ...)API (#2936 by mgravell) - Improve
doubleformatting performance on net8+ and fix equality incorrectness re special doubles by @mgravell in #2928 - Fix key-prefix omission in
SetIntersectionLengthandSortedSet{Combine[WithScores]|IntersectionLength}(#2863 by mgravell) - Fix error constructing
StreamAddmessage (#2941 by mgravell)
- Add
Internal details
- Make private & internal stuff sealed by @Henr1k80 in #2915
- Workaround Mono test failures by @mgravell in #2921
- Replaces string interpolation with structured logging - ServerEndPoint by @Meir017 in #2924, #2925, #2929, #2930
- Tests: Add benchmark suite for easily measuring improvements by @NickCraver in #2931
- intellisense clarification for StreamTrimResult.NotDeleted by @mgravell in #2933
- Tests: Improve stability for AbortOnConnectFailTests by @NickCraver in #2934
๐ New Contributors
- @Henr1k80 made their first contribution in #2915
- @david-brink-talogy made their first contribution in #2822
Full Changelog : 2.8.58...2.9.11
-
v2.8.58 Changes
July 21, 2025What's Changed
- โฌ๏ธ [Tests] Upgrade to xUnit v3 by @NickCraver in #2907
- โ test fix; skip CLIENT PAUSE tests unless long-running enabled by @mgravell in #2916
- StreamGroupInfo.Lag can be null by @robhop in #2902
- โ Add xtrim with minid and new 8.2 stream features by @mgravell in #2912
- ๐ฒ Replaces inline logging with source-generated LoggerMessage by @Meir017 in #2903
- Implement internal cancellation for SCAN via WithCancellation by @mgravell in #2911
- ๐ move logger extensions to LoggerExtensions.cs (extends 2903) by @mgravell in #2917
- ๐ fix-zrevrangebylex by @ArnoKoll in #2636
- ๐ Fix #2679: connect/config: only access task.Result if we know it completed by @mgravell in #2680
๐ New Contributors
- @robhop made their first contribution in #2902
- @Meir017 made their first contribution in #2903
- @ArnoKoll made their first contribution in #2636
Full Changelog : 2.8.47...2.8.58
-
v2.8.47 Changes
July 19, 2025What's Changed
- ๐ New operations of BITOP command in Redis Community Edition 8.2 by @atakavci in #2900
- ๐ Fix CLIENT ID error during handshake by @mgravell in #2909
- ๐ docs: offer guidance on using framework methods for async timeouts / cancellation by @mgravell in #2910
- โก๏ธ Update package dependencies by @mgravell in #2906
Full Changelog : 2.8.41...2.8.47