| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-03-14 | 3.7 kB | |
| v2.6.0 source code.tar.gz | 2026-03-14 | 6.4 MB | |
| v2.6.0 source code.zip | 2026-03-14 | 6.8 MB | |
| Totals: 3 Items | 13.2 MB | 0 | |
🏷️ Configurable cleanup behavior for RemoveByTag()
Normally, when calling RemoveByTag("my-tag"), the entries with such a tag will be gradually expired on a subsequent access.
Community member @charlesvigneault asked for the ability to instead properly remove them.
So I added a new option to allow configuring this behavior:
:::csharp
services.AddFusionCache()
.WithOptions(options =>
{
options.RemoveByTagBehavior = RemoveByTagBehavior.Remove;
});
See here for the original issue.
Ⓜ️ Add support for RemoveByTag("*") in HybridCache adapter
After the initial release of HybridCache in 2025, the team added support for a special case: using RemoveByTag("*") to clear the entire cache.
I didn't notice untile recently, and thanks to community user @vrbyjimmy I did that. Or, to better say it, he did that! He acted so quickly that a PR immediately landed with the implementation, so thanks Jakub for that!
What happens underneath is that a RemoveByTag("*") call on the adapter is detected and re-routed to a Clear() call on the underlying FusionCache instance: very simple and elegant, and I like that a lot.
See here for the original issue.
🔒 Better Distributed Locker + Eager Refresh
Community user @jgshowpad noticed that when using the new distributed stampede protection introduced in v2.5.0 with Eager Refresh some errors were being logged.
That was caused by the Redis-based distributed locker not handling correctly a timeout of zero (which btw is a pretty common approach to basically check for a lock already being acquired by someone else, without having to wait).
This has now been fixed.
See here for the original issue.
⚡ Perf boost for GenerateOperationId()
Community user @Inok contributed with a nice set of low-level perf optimizations for the GenerateOperationId() internal method, which may be called quite a lot when doing observability (logging, OTEL, etc).
That's a very nice and welcome contribution, thanks Pavel!
See here for the original issue.
🔒 Add missing ext method for DI registration of
Community member @mumin-khan noticed that, after releasing distributed stampede support in v2.5.0, I missed the related ext method for the the DI registration.
So now I added it, and it's now possible to do this:
:::csharp
builder.Services.AddFusionCacheRedisDistributedLocker(options =>
{
options.Configuration = ... ;
});
This has now been added, thanks Mumin!
See here for the original issue.
🐞 Fixed a couple of missing ConfigureAwait(false)
Community user @JerinMathewJose01 noticed that on the old .NET Framework 4.7.2 and 4.8, sometimes the factory may remain stuck without completing correctly.
That was caused by a couple of missing ConfigureAwait(false) when awaiting the factory execution.
This has now been fixed.
See here for the original issue.
📕 Docs
As always, I took some time to updated the docs with the latest stuff and make them overall better.