EasyMemoryCache 3.1.8
dotnet add package EasyMemoryCache --version 3.1.8
NuGet\Install-Package EasyMemoryCache -Version 3.1.8
<PackageReference Include="EasyMemoryCache" Version="3.1.8" />
<PackageVersion Include="EasyMemoryCache" Version="3.1.8" />
<PackageReference Include="EasyMemoryCache" />
paket add EasyMemoryCache --version 3.1.8
#r "nuget: EasyMemoryCache, 3.1.8"
#:package EasyMemoryCache@3.1.8
#addin nuget:?package=EasyMemoryCache&version=3.1.8
#tool nuget:?package=EasyMemoryCache&version=3.1.8
EasyMemoryCache
One ICaching interface for in-memory cache, Redis, and Memcached. Sync and async, with dependency injection for .NET 8, 9, and 10.
Install
dotnet add package EasyMemoryCache
Quick start
builder.Services.AddEasyCache(new CacheSettings
{
CacheProvider = CacheProvider.MemoryCache
});
public class UserService
{
private readonly ICaching _caching;
public UserService(ICaching caching) => _caching = caching;
public Task<List<User>> GetUsersAsync() =>
_caching.GetOrSetObjectFromCacheAsync("users", 20, LoadUsersAsync);
}
The factory runs only on a cache miss. Full samples are in the repository.
Providers
In-memory
"CacheSettings": {
"CacheProvider": "MemoryCache"
}
Redis
RedisSerialization accepts Newtonsoft (the default) or Protobuf.
builder.Services.AddEasyCache(new CacheSettings
{
CacheProvider = CacheProvider.Redis,
RedisConnectionString = "localhost:6379,abortConnect=False",
RedisSerialization = SerializationType.Protobuf
});
Memcached
Pass the configuration section so server and socket-pool settings are bound.
builder.Services.AddEasyCache(
builder.Configuration.GetSection("CacheSettings").Get<CacheSettings>(),
builder.Configuration.GetSection("CacheSettings"));
"CacheSettings": {
"CacheProvider": "Memcached",
"Servers": [
{ "Address": "localhost", "Port": 11211 }
]
}
Usage
var names = await _caching.GetOrSetObjectFromCacheAsync("names", 20, LoadNamesAsync);
var namesForTenant = await _caching.GetOrSetObjectFromCacheAsync(
"names",
20,
() => LoadNamesAsync(tenantId));
Empty collections are not stored unless you opt in with cacheEmptyList: true. The default interval is minutes.
var snapshot = await _caching.GetOrSetObjectFromCacheAsync(
"snapshot",
cacheTime: 30,
objectSettingFunction: LoadSnapshotAsync,
cacheEmptyList: true,
interval: CacheTimeInterval.Seconds);
_caching.SetValueToCache("token", token, cacheTime: 2, interval: CacheTimeInterval.Hours);
var token = _caching.GetValueFromCache<string>("token");
_caching.Invalidate("users");
await _caching.InvalidateAllAsync();
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- AsyncKeyedLock (>= 8.1.2)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Caching.Memory (>= 10.0.14)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 10.0.14)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Options (>= 10.0.14)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.14)
- Microsoft.NETCore.Platforms (>= 7.0.4)
- Newtonsoft.Json (>= 13.0.4)
- Newtonsoft.Json.Bson (>= 1.0.3)
- protobuf-net (>= 3.4.40)
-
net8.0
- AsyncKeyedLock (>= 8.1.2)
- Backport.System.Threading.Lock (>= 3.1.8)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Caching.Memory (>= 10.0.14)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 10.0.14)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Options (>= 10.0.14)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.14)
- Microsoft.NETCore.Platforms (>= 7.0.4)
- Newtonsoft.Json (>= 13.0.4)
- Newtonsoft.Json.Bson (>= 1.0.3)
- protobuf-net (>= 3.4.40)
-
net9.0
- AsyncKeyedLock (>= 8.1.2)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Caching.Memory (>= 10.0.14)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 10.0.14)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.14)
- Microsoft.Extensions.Options (>= 10.0.14)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.14)
- Microsoft.NETCore.Platforms (>= 7.0.4)
- Newtonsoft.Json (>= 13.0.4)
- Newtonsoft.Json.Bson (>= 1.0.3)
- protobuf-net (>= 3.4.40)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on EasyMemoryCache:
| Package | Downloads |
|---|---|
|
AlertHawk.Monitoring.Domain
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.1.8 | 117 | 2026/10/27 |
| 3.1.7 | 673 | 2026/10/18 |
| 3.1.6 | 622 | 2026/10/1 |
| 3.1.5 | 121 | 2026/9/27 |
| 3.1.4 | 332 | 2026/8/13 |
| 3.1.3 | 485 | 2026/5/29 |
| 3.1.2 | 270 | 2026/5/1 |
| 3.1.1 | 219 | 2026/4/4 |
| 3.0.7 | 259 | 2026/3/21 |
| 3.0.6 | 1,482 | 2026/1/21 |
| 3.0.5 | 2,581 | 2025/11/13 |
| 3.0.4 | 5,621 | 2025/6/5 |
| 3.0.3 | 699 | 2025/4/22 |
| 3.0.2 | 3,894 | 2024/12/21 |
| 3.0.1 | 467 | 2024/12/3 |
| 3.0.0 | 835 | 2024/11/19 |
| 2.0.9 | 1,848 | 2024/10/13 |
| 2.0.8 | 1,885 | 2024/9/13 |
| 2.0.7 | 1,522 | 2024/8/21 |
| 2.0.6 | 389 | 2024/8/12 |
.NET 10 support