经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » ASP.net » 查看文章
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
来源:cnblogs  作者:chingho  时间:2023/3/17 9:00:16  对本文有异议

上次给大家推荐过一个缓存中间件《一个C#开发的非常实用的缓存中间件》,今天再给大家推荐一个缓存中间件,两者功能差不多,都是提供统一接口、多级缓存、分布式缓存、支持多种Provider等。

项目简介

这是一个基于.Net Core开发的缓存中间件,它支持各种缓存并提供了很多高级功能。它的主要目标是让开发人员开发更简单、特别是一些复杂的缓存场景。

项目特色功能

1、统一缓存接口:方便我们随时调整缓存策略;

2、支持多种缓存:可以满足我们多种业务场景;

3、支持多种缓存系列化:BinaryFormatter、Newtonsoft.Json,MessagePack和Protobuf;

4、支持缓存AOP:able, put,evict,可以简化我们的代码量;

5、多实例支持;

6、支持Diagnostics:方便我们跟踪定位;

7、针对Redis支持特殊Provider:比如原子递增递减的操作等等;

8、二级缓存。

技术架构

1、跨平台:这是基于.Net Core开发的系统,可以部署在Docker, Windows, Linux。

2、基于Net 6.0开发。

3、支持缓存类别:本地缓存:InMemory,SQLite;分布式缓存:StackExchange.Redis,csredis,EnyimMemcachedCore。

项目结构

图片

===

使用方法

**配置缓存
**

在Startup.cs,配置缓存

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. ......
  4. services.AddEasyCaching(option =>
  5. {
  6. //内存缓存:default
  7. option.UseInMemory("default");
  8. //内存缓存:cus
  9. option.UseInMemory("cus");
  10. //redis缓存:redis1
  11. option.UseRedis(config =>
  12. {
  13. config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
  14. config.DBConfig.SyncTimeout = 10000;
  15. config.DBConfig.AsyncTimeout = 10000;
  16. config.SerializerName = "mymsgpack";
  17. }, "redis1")
  18. .WithMessagePack("mymsgpack")//with messagepack serialization
  19. ;
  20. //redis缓存:redis2
  21. option.UseRedis(config =>
  22. {
  23. config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6380));
  24. }, "redis2");
  25. //sqlite缓存
  26. option.UseSQLite(config =>
  27. {
  28. config.DBConfig = new SQLiteDBOptions { FileName = "my.db" };
  29. });
  30. //memcached 缓存
  31. option.UseMemcached(config =>
  32. {
  33. config.DBConfig.AddServer("127.0.0.1", 11211);
  34. });
  35. option.UseMemcached(Configuration);
  36. //fasterKv缓存
  37. option.UseFasterKv(config =>
  38. {
  39. config.SerializerName = "msg";
  40. })
  41. .WithMessagePack("msg");
  42. });
  43. }

**使用方式
**

  1. public class CusController : Controller
  2. {
  3. //缓存
  4. private readonly IEasyCachingProviderFactory _factory;
  5. public CusController(IEasyCachingProviderFactory factory)
  6. {
  7. this._factory = factory;
  8. }
  9. // GET api/cus/inmem?name=Default
  10. [HttpGet]
  11. [Route("inmem")]
  12. public string Get(string name = EasyCachingConstValue.DefaultInMemoryName)
  13. {
  14. //根据name,获取缓存实例
  15. var provider = _factory.GetCachingProvider(name);
  16. var val = name.Equals("cus") ? "cus" : "default";
  17. var res = provider.Get("demo", () => val, TimeSpan.FromMinutes(1));
  18. return $"cached value : {res}";
  19. }
  20. ......
  21. }

ResponseCache缓存

  1. [ResponseCache(Duration = 30, VaryByQueryKeys = new string[] { "page" })]
  2. public IActionResult List(int page = 0)
  3. {
  4. return Content(page.ToString());
  5. }

AOP缓存

  1. [EasyCachingAble(Expiration = 10)]
  2. string GetCurrentUtcTime();
  3. [EasyCachingPut(CacheKeyPrefix = "Castle")]
  4. string PutSomething(string str);
  5. [EasyCachingEvict(IsBefore = true)]
  6. void DeleteSomething(int id);

项目地址

https://github.com/dotnetcore/EasyCaching

更多开源项目请查看一个专注推荐优秀.Net开源项目的榜单

- End -

文章首发于公众号【编程乐趣】,欢迎大家关注。
图片

原文链接:https://www.cnblogs.com/chingho/p/17155494.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号