CacheManager是一个开源的 .NET 缓存抽象层,使用 C# 编写,支持多种缓存提供程序并实现许多高级功能。其主要目标是简化开发者在复杂缓存场景中的工作,通过统一的接口和灵活的配置,让缓存逻辑更易维护和扩展。摘要:CacheManager是一个开源的 .NET 缓存抽象层,使用 C# 编写,支持多种缓存提供程序并实现许多高级功能。其主要目标是简化开发者在复杂缓存场景中的工作,通过统一的接口和灵活的配置,让缓存逻辑更易维护和扩展。
• 多后端支持
CacheManager支持多种缓存技术,如内存缓存(System.Runtime.Caching 和 Microsoft.Extensions.Caching.Memory)、redis、Memcached(部分版本)等。
• 统一 API 接口
提供一致的 ICache接口,便于切换不同的缓存策略而不需大量修改代码。
• 分层缓存机制
可以轻松实现多级缓存结构,例如在分布式缓存前加一层本地内存缓存,提高读取性能,并由 CacheManager自动同步各层缓存。
• 过期与清除策略
支持滑动过期和绝对过期机制,并可通过区域(Region)管理批量清除缓存项。
• 更新操作控制
支持带锁或事务的更新操作,确保分布式环境下的数据一致性。
• 事件系统
提供丰富的事件钩子(如 OnGet, OnAdd, OnRemove),可监听缓存操作,甚至支持跨实例同步通知。
• 序列化支持
支持多种序列化方式,包括 Binary、JSON、Protocol Buffer、Bond 等,适用于不同性能和兼容性需求。
• 统计与日志
内置缓存操作统计计数器,并支持通过 Microsoft.Extensions.Logging进行日志记录。
CacheManagerCacheManager.Core核心库,包含基本接口与抽象类
CacheManager.StackExchange.RedisRedis 缓存支持
CacheManager.Microsoft.Extensions.Caching.Memory基于 Microsoft.Extensions 的内存缓存支持
CacheManager.Serialization.Json/ ProtoBuf/Bond/DataContract
不同序列化方式的支持包
安装(使用 NuGet CLI):
Install-Package CacheManager.CoreInstall-Package CacheManager.StackExchange.Redis初始化内存缓存varcache = CacheFactory.Build("myCache", settings =>
{
settings.WithSystemRuntimeCacheHandle;
});初始化 Redis 缓存varredisConfig =newRedisConfiguration("localhost");
varcache = CacheFactory.Build("redisCache", settings =>
{
settings.WithRedis(redisConfig, serializer:newJsonCacheSerializer);
});基本缓存操作cache.Add("key1", "value1"); // 添加缓存
stringvalue;
if(cache.TryGet("key1",outvalue))// 获取缓存
{
Console.WriteLine(value);
}
cache.Put("key1", "newValue1");// 更新缓存
cache.Remove("key1");// 删除缓存设置缓存过期时间cache.Add("key1", "value1", ExpirationMode.Sliding, TimeSpan.FromMinutes(5));启用缓存区域cache.Add("region1", "keyA", "valueA"); // 在 region1 中添加缓存
cache.ClearRegion("region1");// 清除整个区域的所有缓存分布式缓存同步
通过 Redis 的发布/订阅机制实现多个应用实例间的缓存同步,确保所有节点缓存状态一致。
事件监听cache.OnAdd += (sender, args) =>{
Console.WriteLine($"Item added: {args.Key}");
};统计信息Console.WriteLine($"Total gets: {cache.Statistics.GetCount}");CacheManager是一个强大且灵活的 .NET 缓存解决方案,不仅提供了对多种缓存系统的统一访问接口,还集成了诸如多层缓存、事件系统、序列化支持等高级功能。无论是构建小型应用还是大型分布式系统,CacheManager都能显著提升开发效率并优化缓存性能。
来源:opendotnet