CacheManager
是一个开源的 .NET 缓存抽象层,使用 C# 编写,支持多种缓存提供程序并实现许多高级功能。其主要目标是简化开发者在复杂缓存场景中的工作,通过统一的接口和灵活的配置,让缓存逻辑更易维护和扩展。 1. 核心特性• 多后端支持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
进行日志记录。 2. 安装与依赖CacheManager
提供多个 NuGet 包以适应不同项目需求:包名 | 支持的功能 |
CacheManager.Core | 核心库,包含基本接口与抽象类 |
CacheManager.StackExchange.Redis | Redis 缓存支持 |
CacheManager.Microsoft.Extensions.Caching.Memory | 基于 Microsoft.Extensions 的内存缓存支持 |
CacheManager.Serialization.Json / ProtoBuf / Bond / DataContract | 不同序列化方式的支持包 |
安装(使用 NuGet CLI):
Install-Package CacheManager.CoreInstall-Package CacheManager.StackExchange.Redis
3. 配置与使用示例初始化内存缓存var cache = CacheFactory.Build("myCache", settings =>{ settings.WithSystemRuntimeCacheHandle();});
初始化 Redis 缓存var redisConfig = new RedisConfiguration("localhost");var cache = CacheFactory.Build("redisCache", settings =>{ settings.WithRedis(redisConfig, serializer: new JsonCacheSerializer());});
基本缓存操作cache.Add("key1", "value1"); // 添加缓存string value;if (cache.TryGet("key1", out value)) // 获取缓存{ 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"); // 清除整个区域的所有缓存
4. 高级功能介绍分布式缓存同步通过 Redis 的发布/订阅机制实现多个应用实例间的缓存同步,确保所有节点缓存状态一致。
事件监听cache.OnAdd += (sender, args) =>{ Console.WriteLine($"Item added: {args.Key}");};
统计信息Console.WriteLine($"Total gets: {cache.Statistics.GetCount}");
5. 项目地址https://github.com/MichaCo/CacheManager
CacheManager
是一个强大且灵活的 .NET 缓存解决方案,不仅提供了对多种缓存系统的统一访问接口,还集成了诸如多层缓存、事件系统、序列化支持等高级功能。无论是构建小型应用还是大型分布式系统,CacheManager
都能显著提升开发效率并优化缓存性能。