CacheManager
是一个开源的 .NET 缓存抽象层,使用 C# 编写,支持多种缓存提供程序并实现许多高级功能。其主要目标是简化开发者在复杂缓存场景中的工作,通过统一的接口和灵活的配置,让缓存逻辑更易维护和扩展。
1. 核心特性
• 多后端支持
CacheManager
支持多种缓存技术,如内存缓存(System.Runtime.Caching 和 Microsoft.Extensions.Caching.Memory)、Redis、Memcached(部分版本)等。• 统一 API 接口
提供一致的ICache<T>
接口,便于切换不同的缓存策略而不需大量修改代码。• 分层缓存机制
可以轻松实现多级缓存结构,例如在分布式缓存前加一层本地内存缓存,提高读取性能,并由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 / | 不同序列化方式的支持包 |
安装(使用 NuGet CLI):
Install-Package CacheManager.Core
Install-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
都能显著提升开发效率并优化缓存性能。
如果你觉得这篇文章对你有帮助,欢迎点赞、收藏并分享给更多开发者!让我们一起学习,共同进步!