0
点赞
收藏
分享

微信扫一扫

【愚公系列】2023年05月 .NET CORE工具案例-基于CacheManager缓存中间件

(文章目录)

前言

CacheManager 是用 C# 编写的 .NET 开源缓存抽象层。它支持各种缓存提供程序并实现许多高级功能。

CacheManager 包的主要目标是使开发人员更容易处理非常复杂的缓存方案。 使用CacheManager,只需几行代码即可实现多层缓存,例如分布式缓存前面的进程内缓存。

CacheManager不仅仅是一个为各种缓存提供程序统一编程模型的接口,这使得以后在项目中更改缓存策略变得非常容易。它还提供其他功能,如缓存同步、并发更新、序列化、事件、性能计数器...... 开发人员只能在需要时选择启用这些功能。

CacheManager的源码网址:https://github.com/MichaCo/CacheManager

在这里插入图片描述

一、基于CacheManager缓存中间件(通用版本)

1.安装包

CacheManager.SystemRuntimeCaching

在这里插入图片描述

2.添加或者更新缓存

using CacheManager.Core;

var cache = CacheFactory.Build<string>(s => s.WithDictionaryHandle());

Console.WriteLine(Testing update...);

if (!cache.TryUpdate(test, v => item has not yet been added, out string newValue))
{
Console.WriteLine(Value not added?: {0}, newValue == null);
}

cache.Add(test, start);
Console.WriteLine(Initial value: {0}, cache[test]);

cache.AddOrUpdate(test, adding again?, v => updating and not adding);
Console.WriteLine(After AddOrUpdate: {0}, cache[test]);

cache.Remove(test);
try
{
var removeValue = cache.Update(test, v => updated?);
}
catch
{
Console.WriteLine(Error as expected because item didn't exist.);
}

// use try update to not deal with exceptions
if (!cache.TryUpdate(test, v => v, out string removedValue))
{
Console.WriteLine(Value after remove is null?: {0}, removedValue == null);
}
Console.ReadLine();

在这里插入图片描述

3.缓存事件监听

var cache = CacheFactory.Build<string>(s => s.WithDictionaryHandle());
cache.OnAdd += (sender, args) => Console.WriteLine(Added + args.Key);
cache.OnGet += (sender, args) => Console.WriteLine(Got + args.Key);
cache.OnRemove += (sender, args) => Console.WriteLine(Removed + args.Key);

cache.Add(key, value);
var val = cache.Get(key);
cache.Remove(key);

在这里插入图片描述

4.计数器

var cache = CacheFactory.Build<long>(s => s.WithDictionaryHandle());

Console.WriteLine(Testing update counter...);

cache.AddOrUpdate(counter, 0, v => v + 1);

Console.WriteLine(Initial value: {0}, cache.Get(counter));

for (var i = 0; i < 12345; i++)
{
cache.Update(counter, v => v + 1);
}

Console.WriteLine(Final value: {0}, cache.Get(counter));

在这里插入图片描述

二、基于CacheManager缓存中间件(FW版本)

1.Redis缓存

var cache = CacheFactory.Build<int>(settings =>
{
settings
.WithSystemRuntimeCacheHandle()
.And
.WithRedisConfiguration(redis, config =>
{
config.WithAllowAdmin()
.WithDatabase(0)
.WithEndpoint(localhost, 6379);
})
.WithMaxRetries(1000)
.WithRetryTimeout(100)
.WithRedisBackplane(redis)
.WithRedisCacheHandle(redis, true);
});

cache.Add(test, 123456);

cache.Update(test, p => p + 1);

var result = cache.Get(test);

2.读取json配置文件

var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
.AddJsonFile(cache.json);

this.Configuration = builder.Build();
举报

相关推荐

0 条评论