![]() |
VOOZH | about |
dotnet add package Sparkdo.Caching --version 1.0.3
NuGet\Install-Package Sparkdo.Caching -Version 1.0.3
<PackageReference Include="Sparkdo.Caching" Version="1.0.3" />
<PackageVersion Include="Sparkdo.Caching" Version="1.0.3" />Directory.Packages.props
<PackageReference Include="Sparkdo.Caching" />Project file
paket add Sparkdo.Caching --version 1.0.3
#r "nuget: Sparkdo.Caching, 1.0.3"
#:package Sparkdo.Caching@1.0.3
#addin nuget:?package=Sparkdo.Caching&version=1.0.3Install as a Cake Addin
#tool nuget:?package=Sparkdo.Caching&version=1.0.3Install as a Cake Tool
Sparkdo 缓存库,提供分布式缓存功能实现。
<PackageReference Include="Sparkdo.Caching" Version="x.x.x" />
IDistributedCache<TCacheItem>: 分布式缓存接口(字符串键)IDistributedCache<TCacheItem, TCacheKey>: 分布式缓存接口(泛型键)DefaultDistributedCache<TCacheItem>: 默认分布式缓存实现(字符串键)DefaultDistributedCache<TCacheItem, TCacheKey>: 默认分布式缓存实现(泛型键)SparkdoDistributedCacheOptions: 分布式缓存配置选项DistributedCacheKeyNormalizeArgs: 缓存键标准化参数IDistributedCacheKeyNormalizer: 缓存键标准化器接口DefaultDistributedCacheKeyNormalizer: 默认缓存键标准化器实现IDistributedCacheSerializer: 分布式缓存序列化器接口Utf8JsonDistributedCacheSerializer: UTF-8 JSON 缓存序列化器实现ICacheSupportsMultipleItems: 支持多项操作的缓存接口CacheNameAttribute: 缓存名称特性UnitOfWorkCacheItem: 工作单元缓存项UnitOfWorkCacheItemExtensions: 工作单元缓存项扩展方法public class MyService
{
private readonly IDistributedCache<MyCacheItem> _cache;
public MyService(IDistributedCache<MyCacheItem> cache)
{
_cache = cache;
}
public async Task<MyCacheItem> GetDataAsync(string key)
{
// 尝试从缓存获取数据
var cachedItem = await _cache.GetAsync(key);
if (cachedItem != null)
{
return cachedItem;
}
// 如果缓存中没有,从数据源获取
var item = await GetDataFromSourceAsync(key);
// 将数据存入缓存
await _cache.SetAsync(key, item);
return item;
}
}
public class MyService
{
private readonly IDistributedCache<MyCacheItem, int> _cache;
public MyService(IDistributedCache<MyCacheItem, int> cache)
{
_cache = cache;
}
public async Task<Dictionary<int, MyCacheItem>> GetBatchDataAsync(int[] keys)
{
// 批量获取缓存数据
var cachedItems = await _cache.GetManyAsync(keys);
var result = new Dictionary<int, MyCacheItem>();
var missingKeys = new List<int>();
// 分离已缓存和未缓存的数据
foreach (var item in cachedItems)
{
if (item.Value != null)
{
result[item.Key] = item.Value;
}
else
{
missingKeys.Add(item.Key);
}
}
// 获取未缓存的数据
if (missingKeys.Any())
{
var missingItems = await GetBatchDataFromSourceAsync(missingKeys);
// 批量设置缓存
var itemsToCache = missingItems.Select(x => new KeyValuePair<int, MyCacheItem>(x.Key, x.Value));
await _cache.SetManyAsync(itemsToCache);
// 合并结果
foreach (var item in missingItems)
{
result[item.Key] = item.Value;
}
}
return result;
}
}
// 在模块配置中自定义缓存选项
public override void Configure(IConfigureContext context)
{
context.Services.Configure<SparkdoDistributedCacheOptions>(options =>
{
// 配置全局缓存条目选项
options.GlobalCacheEntryOptions.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1);
// 为特定缓存类型配置选项
options.ConfigureCache<MyCacheItem>(new DistributedCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromMinutes(30)
});
});
}
该库提供了完整的缓存功能实现,可以通过以下方式扩展:
所有公共接口和类都添加了详细的 XML 文档注释,便于开发者理解和使用。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 5 NuGet packages that depend on Sparkdo.Caching:
| Package | Downloads |
|---|---|
|
Sparkdo.Ddd.Domain
Sparkdo DDD 领域模型库,提供领域驱动设计的核心组件实现 |
|
|
Sparkdo.TenantManagement.Domain
Sparkdo 租户管理领域层,提供租户管理的核心业务逻辑和数据访问接口 |
|
|
Sparkdo.SettingManagement.Domain
Sparkdo 设置管理领域库,提供设置管理功能的核心领域模型、仓储接口和业务逻辑实现 |
|
|
Sparkdo.BlobStoring.Aliyun
Sparkdo 阿里云 OSS 存储提供程序,用于将 BLOB 数据存储到阿里云对象存储服务中 |
|
|
Sparkdo.BlobStoring.Aws
Sparkdo AWS S3 BLOB 存储提供程序,用于在 Amazon S3 云存储中存储和检索二进制大对象 |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.4-preview.3 | 187 | 6/8/2026 |
| 1.0.4-preview.2 | 183 | 6/7/2026 |
| 1.0.4-preview.1 | 186 | 6/7/2026 |
| 1.0.3 | 431 | 6/6/2026 |
| 1.0.3-preview.1 | 191 | 5/17/2026 |
| 1.0.2 | 377 | 4/27/2026 |
| 1.0.2-preview.5 | 96 | 4/15/2026 |
| 1.0.2-preview.4 | 111 | 2/8/2026 |
| 1.0.2-preview.3 | 111 | 2/1/2026 |
| 1.0.2-preview.2 | 130 | 1/31/2026 |
| 1.0.2-preview.1 | 205 | 12/4/2025 |
| 1.0.1 | 1,068 | 11/27/2025 |
| 1.0.0 | 1,046 | 11/25/2025 |
| 1.0.0-preview.5 | 142 | 10/24/2025 |