NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #2202 most downloaded on NuGet
StackExchange.Redis.Extensions.AspNetCore is a library that has a set of extensions method fpr ASP.NET Core
Last release 2 months ago
03 Aug 2026
Release timing varies
gaps range from 9 days to 1.2 years
Rarely documented
notes for 13 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
67 releases · first in 2018
Upgraded Snappier to 1.3.x to fix high severity vulnerability (GHSA-pggp-6c3x-2xmx)
v13.0.1:
v13.0.0:
v12.6.0:
v12.5.0:
v12.2.0:
v12.1.0:
v12.0.0:
One column per quarter.
Patch release: full-codebase performance pass with zero public API changes, plus three bug fixes found during the audit. Compatible drop-in upgrade from v13.0.0.
TotalOutstanding() per comparison — each call allocated a ServerCounters snapshot in SE.Redis, up to ~9 per single Redis operation with the default pool size. Now at most one call per pooled connection.GetCounters() saved per operation).Interlocked counter: previously it used a cryptographic RNG on net6+ and allocated new Random() per call on netstandard2.1 — and wasn't actually round-robin.Db0..Db16 / GetDefaultDatabase() no longer allocate a new RedisDatabase on every access — instances are cached per database number.HashGetAsync(hashKey, string[]) issues a single HMGET instead of N parallel HGET round-trips.UpdateExpiryAsync drops the redundant EXISTS pre-check before EXPIRE — half the round-trips, N-fold for UpdateExpiryAllAsync.AddAllAsync builds its payload in one pre-sized pass instead of a LINQ pipeline with growth buffers.SetPopAsync(count), SortedSetRangeByScoreAsync, HashKeysAsync, SearchKeysAsync now materialize results eagerly — previously a lazy Select re-deserialized (or re-allocated) everything on each enumeration.ContinueWith continuation removed).JsonSerializer and pools char buffers.MemoryStreams.Decompress no longer duplicates the output array (the copy was 100% redundant); Compress rents its transient worst-case buffer from ArrayPool.BrotliEncoder.TryCompress replaces the stream pipeline.IDistributedCache adapter: cached field arrays (no per-Get allocation) and batched HSET+EXPIRE in a single network write on SetAsync.HashGetAllAsyncAtOneTimeAsync with KeyPrefix: the per-call Lua script embedded the hash key unprefixed while wrongly prefixing the hash fields — with a prefix configured the method read the wrong hash. The script was also a Lua injection vector and defeated the server-side script cache. Replaced by HMGET.Utf8JsonSerializer.Deserialize(null) threw instead of returning default, unlike every other serializer.ListGetFromRightAsync had a duplicated null check (dead code).HashGetAsync(string[]) returns a Dictionary instead of ConcurrentDictionary (contract is IDictionary<string, T?>).AggregateException.Full changelog: v13.0.0...v13.0.1
Upgraded Snappier to 1.3.x to fix high severity vulnerability (GHSA-pggp-6c3x-2xmx)
v13.0.0:
v12.6.0:
v12.5.0:
v12.2.0:
v12.1.0:
v12.0.0:
HyperLogLogAddAsync, HyperLogLogLengthAsync, HyperLogLogMergeAsync — probabilistic cardinality estimation with serialization supportLockTakeAsync, LockReleaseAsync, LockExtendAsync, LockQueryAsync + high-level LockAcquireAsync returning IRedisLock with IAsyncDisposable auto-release and retry logicSortedSetLengthAsync, SortedSetScoreAsync, SortedSetScoresAsync, SortedSetRankAsync, SortedSetIncrementAsync, SortedSetDecrementAsync, SortedSetPopAsync, SortedSetRandomMemberAsync, SortedSetRandomMembersAsync, SortedSetCombineAndStoreAsyncListAddToRightAsync (single + array), ListGetFromLeftAsync, ListLengthAsync, ListRangeAsync, ListGetByIndexAsync, ListSetByIndexAsync, ListTrimAsync, ListRemoveAsync, ListInsertBeforeAsync, ListInsertAfterAsync, ListMoveAsyncScriptEvaluateAsync, ScriptEvaluateReadOnlyAsync with raw and typed deserialization variantsStringSetBitAsync, StringGetBitAsync, StringBitCountAsync, StringBitOperationAsync, StringBitPositionAsyncAdded 17 comprehensive tests for the VectorSet API (VADD, VSIM, VREM, VCONTAINS, VCARD, VDIM, VGETATTR, VSETATTR, VINFO, VRANDMEMBER, VLINKS) now that Redis 8.0+ is available on Docker Hub.
Core package now accepts StackExchange.Redis [2.12.14, 4.0.0), ensuring forward compatibility with the upcoming SE.Redis 3.x releases.
ICacheSerializationContext interface (unused since 2022)using directivesRedisKeyHelper.cs → GenericsExtensions.cs to match actual class nameredis:8 Docker image (Redis 8.10.0 stable)llms-full.txt for comprehensive AI assistant documentation1754 tests passing on net10.0 (up from 1635 in v12.6.0). All tests pass across net10.0 and net9.0.
None for consumers using IRedisDatabase through DI. If you have a custom implementation of IRedisDatabase, you will need to add the new methods — see the migration guide.
Upgraded Snappier to 1.3.x to fix high severity vulnerability (GHSA-pggp-6c3x-2xmx)
v12.6.0:
v12.5.0:
v12.2.0:
v12.1.0:
v12.0.0:
Fixed Pub/Sub UnsubscribeAsync and UnsubscribeAllAsync not working with connection pooling (#657)
When using connection pooling (default pool size: 5), UnsubscribeAsync and UnsubscribeAllAsync were each calling GetConnection() independently, potentially obtaining a different IConnectionMultiplexer than the one used during SubscribeAsync. Since StackExchange.Redis subscriptions are scoped to a specific multiplexer, calling unsubscribe on a different one was silently doing nothing.
The fix iterates all pool connections and uses ISubscriber.SubscribedEndpoint() to locate the multiplexer holding the active subscription.
dotnet add package StackExchange.Redis.Extensions.Core --version 12.6.0Full Changelog: v12.5.0...v12.6.0
Upgraded Snappier to 1.3.x to fix high severity vulnerability (GHSA-pggp-6c3x-2xmx)
v12.5.0:
v12.2.0:
v12.1.0:
v12.0.0:
StringIncrementAsync / StringDecrementAsync with long and double overloads (#634)SetCombineAsync<T> and SetCombineAndStoreAsync for Union, Intersect, Difference operations (#635)KeyRenameAsync, KeyTypeAsync, KeyDumpAsync, KeyRestoreAsync (#636)Microsoft.Extensions.Caching.StackExchangeRedis, supports sliding and absolute expiration (#632)AddRedisExtensionsHealthCheck() monitors connection pools and PINGs each client, returns Healthy/Degraded/Unhealthy (#633).NET 8+ [FromKeyedServices("name")] support for named Redis clients and databases (#654)Added SECURITY.md with GitHub Private Vulnerability Reporting
v12.2.0:
v12.1.0:
v12.0.0:
SearchKeysAsync ignoring database number — SearchKeysAsync was using a raw SCAN command via IServer.ExecuteAsync which always defaults to database 0, regardless of which database instance (Db1, Db2, etc.) was used. Replaced with IServer.KeysAsync(database, pattern) which correctly targets the specified database. (#651)
RemoveByTagAsync not cleaning up tag keys — RemoveByTagAsync deleted all data keys referenced by a tag but never deleted the tag Set key itself (tag:{tagName}), causing empty Redis Sets to accumulate indefinitely. The tag key is now deleted after removing its members. (#650)
Full Changelog: v12.1.0...v12.2.0
Added SECURITY.md with GitHub Private Vulnerability Reporting
v12.1.0:
v12.0.0:
AI/ML features and developer experience improvements.
15 methods covering Redis 8.0 VectorSet operations for RAG, recommendations, and semantic search:
VectorSetAddAsync, VectorSetSimilaritySearchAsync, VectorSetRemoveAsync, VectorSetContainsAsyncVectorSetLengthAsync, VectorSetDimensionAsync, VectorSetInfoAsyncVectorSetGetAttributesJsonAsync, VectorSetSetAttributesJsonAsyncVectorSetRandomMemberAsync, VectorSetRandomMembersAsyncVectorSetGetApproximateVectorAsync, VectorSetGetLinksAsync, VectorSetGetLinksWithScoresAsyncllms.txt — Standard file for AI documentation indexing (Context7, Copilot, Cursor)/redis-configure — Generate configuration from natural language/redis-scaffold — Production code patterns (cache-aside, Streams, Geo, VectorSet RAG)/redis-diagnose — Troubleshoot timeouts, connection failures, serialization errorsAll 14 packages published as v12.1.0:
dotnet add package StackExchange.Redis.Extensions.Core --version 12.1.0Added GeoSpatial API (GEOADD, GEOSEARCH, GEODIST, GEOPOS, GEOHASH)
v12.0.0:
Major release with new features, bug fixes, modernized infrastructure, and comprehensive documentation.
Connection pooling (LeastLoaded or RoundRobin)
Connection pooling (LeastLoaded or RoundRobin)
Connection pooling (LeastLoaded or RoundRobin)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
#320 #311 #307 #304
Fixed problem related to reconnecting
Fixed problem related to reconnecting
See here #296
Nothing published for this version
Nothing published for this version
Fixed #288
Fixed #288
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →