Dawning SDK - Caching library with Memory and Redis support
$ dotnet add package Dawning.Caching缓存服务库,支持内存缓存和 Redis 分布式缓存。
dotnet add package Dawning.Caching
ICacheServicebuilder.Services.AddDawningMemoryCache(options =>
{
options.DefaultExpirationMinutes = 30;
options.KeyPrefix = "myapp";
});
builder.Services.AddDawningRedisCache("localhost:6379", options =>
{
options.DefaultExpirationMinutes = 60;
options.KeyPrefix = "myapp";
options.Redis.InstanceName = "MyApp:";
});
public class UserService
{
private readonly ICacheService _cache;
public UserService(ICacheService cache)
{
_cache = cache;
}
public async Task<User?> GetUserAsync(int id)
{
return await _cache.GetOrSetAsync(
$"user:{id}",
async () => await _userRepository.GetByIdAsync(id),
TimeSpan.FromMinutes(10));
}
public async Task InvalidateUserCacheAsync(int id)
{
await _cache.RemoveAsync($"user:{id}");
}
}
{
"Caching": {
"Provider": "Redis",
"DefaultExpirationMinutes": 30,
"KeyPrefix": "myapp",
"Redis": {
"ConnectionString": "localhost:6379",
"InstanceName": "MyApp:",
"Database": 0
}
}
}
| 方法 | 描述 |
|---|---|
GetAsync<T>(key) | 获取缓存值 |
SetAsync<T>(key, value, expiration?) | 设置缓存值 |
GetOrSetAsync<T>(key, factory, expiration?) | 获取或设置缓存值 |
RemoveAsync(key) | 移除缓存 |
RemoveByPatternAsync(pattern) | 按模式移除缓存(仅内存缓存) |
ExistsAsync(key) | 检查缓存是否存在 |
RefreshAsync(key, expiration) | 刷新缓存过期时间 |