Releases: TurnerSoftware/CacheTower
0.10.0
Note: This version is has package referencing issues that prevent it working properly. Please use 0.11.0 instead!
Breaking Change
If you want the old behaviour, you must specify a StaleAfter
time of 0 yourself with the other constructor.
Other Changes
- upgrade test sdk by @vp89 (#155)
- Workaround for leading dash in GitHub markdown rendering by @Turnerj (#154)
- Switch to TurnerSoftware.BuildVersioning by @Turnerj (#156)
🚀 Features
- Add support for using activators to resolve TContext by @mgoodfellow (#170)
👨🏼💻 Contributors
@Turnerj, @mgoodfellow and @vp89
0.9.0
0.8.0
Changes
🚀 Features
🐛 Bug Fixes
🧰 Maintenance
- Bump Moq from 4.15.2 to 4.16.0 by @dependabot-preview (#135)
- Bump coverlet.collector from 3.0.0 to 3.0.1 by @dependabot-preview (#134)
- Bump coverlet.collector from 1.3.0 to 3.0.0 by @dependabot-preview (#133)
- Bump Microsoft.NET.Test.Sdk from 16.8.0 to 16.8.3 by @dependabot-preview (#132)
- Bump protobuf-net from 3.0.62 to 3.0.73 by @dependabot-preview (#131)
- Bump Moq from 4.15.1 to 4.15.2 by @dependabot-preview (#129)
- Bump EasyCaching.Redis from 0.9.0 to 1.1.0 by @dependabot-preview (#126)
- Bump EasyCaching.Disk from 0.9.0 to 1.1.0 by @dependabot-preview (#127)
- Bump EasyCaching.Serialization.Protobuf from 0.9.0 to 1.1.0 by @dependabot-preview (#125)
- Bump EasyCaching.InMemory from 0.9.0 to 1.1.0 by @dependabot-preview (#124)
- Bump StackExchange.Redis from 2.1.58 to 2.2.4 by @dependabot-preview (#123)
👨🏼💻 Contributors
@Turnerj, @dependabot-preview and @dependabot-preview[bot]
0.7.1
Reverting dependency updates that reference .NET 5.0-based libraries.
See #117 for more information.
Dependencies Affected
- Downgrading Microsoft.Extensions.DependencyInjection.Abstractions from 5.0.0 to 3.1.10
- Downgrading System.Runtime.CompilerServices.Unsafe from 5.0.0 to 4.7.1
If you are using .NET 5 and have these higher dependencies being used, you won't have an issue. It is only an issue if you were running previous versions of the runtime with these libraries under particular conditions.
In the future, these dependencies will be upgraded again.
0.7.0
Changes
🚀 Features
🐛 Bug Fixes
- Fix Redis locking system to avoid key conflict by @Turnerj (#116)
- Fix remote Redis eviction issues by @Turnerj (#115)
- Fix issues with Redis CI by @Turnerj (#111)
🧰 Maintenance
- Bump protobuf-net from 3.0.52 to 3.0.62 by @dependabot-preview (#112)
- Bump Microsoft.Extensions.DependencyInjection.Abstractions from 3.1.9 to 5.0.0 by @dependabot-preview (#108)
- Bump System.Runtime.CompilerServices.Unsafe from 4.7.1 to 5.0.0 by @dependabot-preview (#106)
- Bump protobuf-net from 3.0.29 to 3.0.52 by @dependabot-preview (#98)
- Bump Moq from 4.14.7 to 4.15.1 by @dependabot-preview (#107)
- Updated MongoFramework from 0.21.2 to 0.23.2 by @Turnerj (#109)
- Bump Microsoft.NET.Test.Sdk from 16.7.1 to 16.8.0 by @dependabot-preview (#105)
- Bump Moq from 4.14.6 to 4.14.7 by @dependabot-preview (#100)
- Bump Microsoft.Extensions.DependencyInjection.Abstractions from 3.1.8 to 3.1.9 by @dependabot-preview (#99)
- Bump Nito.AsyncEx from 5.0.0 to 5.1.0 by @dependabot-preview (#97)
- Bump Moq from 4.14.5 to 4.14.6 by @dependabot-preview (#96)
- Bump LazyCache from 2.0.4 to 2.1.2 by @dependabot-preview (#95)
- Bump Microsoft.NET.Test.Sdk from 16.7.0 to 16.7.1 by @dependabot-preview (#84)
👨🏼💻 Contributors
@Turnerj, @dependabot-preview and @dependabot-preview[bot]
0.6.1
0.6.0
0.5.0
Noteworthy Changes
- Waiting tasks are given the refreshed value (492158c)
- Avoid waiting on refresh and back populating cache in
GetOrSetAsync
(bb9031f) - More accurate connection available checking for Redis (1c28388)
MemoryCacheLayer
now usesConcurrentDictionary
again (3beacac)CacheSettings
constructor logic has changed - when noStaleAfter
is given, the default value is zero rather than being the same value asTimeToLive
. (6dd6b15)
Performance Improvements
CacheStack
, when multiple threads are waiting on a refreshed result, performs about 5% fasterCacheStack
, in the caching alternative memory benchmarks, performs significantly better with memory allocations as well as a 6% performance improvement.
Notes
There are some minor memory allocation increases, primarily around going back to using ConcurrentDictionary
for MemoryCacheLayer
. However, these changes are somewhat offset from the overall performance increase under heavy load that wasn't possible with the custom locking solution.
With the CacheStack
improvements in the caching alternative memory benchmarks, the allocation bonuses primarily come from not using Task.Run
(bb9031f). Even though those were not called in the benchmark, their presence must have introduced more work in either the state machine or the final IL that made it perform slower.
0.4.0
Major Changes
CacheStack
to require generic type forICacheContext
(#16)
While this might seem to make certain ways of using CacheStack
more difficult in terms of DI now always needing to specify the context type, it makes using the context inside the value getter far easier as it no longer needs to be cast.
With this in mind, this completely breaks any previous usage.
There didn't seem to be any measurable difference in performance from this change.
0.3.0
Major Changes
- Switched to
ValueTask
forCacheStack
and extensions (15726f1) - Partial custom JSON serialization for
JsonFileCacheLayer
(5374264) - Dropped Request ID field from
CacheStack
and extensions (ccc67d1) - Dropped
CachedAt
andTimeToLive
onCacheEntry
for a singleExpiry
field (#13) - Added Dependency Injection helper (#8)
Performance Changes
CacheStack
allocates ~29% lessMemoryCacheLayer
allocates ~2% lessRedisCacheLayer
is ~2% faster while allocating ~2% lessJsonFileCacheLayer
allocates ~2% lessMongoDbCacheLayer
allocates ~9% less