CacheManager:告别缓存复杂性,让NET缓存变得简单优雅

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

 / ProtoBuf / Bond / DataContract

不同序列化方式的支持包

安装(使用 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 都能显著提升开发效率并优化缓存性能。


如果你觉得这篇文章对你有帮助,欢迎点赞、收藏并分享给更多开发者!让我们一起学习,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值