MemoryCache的简单使用

1.项目的Startup类的ConfigureServices方法中添加服务

services.AddMemoryCache();

2.添加一个拦截资源的特性

// 调用加了此特性的API时会先执行OnResourceExecuting方法,判断缓存中是否存在,OnResourceExecuted方法在API返回之前执行
public class CustomResourceFilterAttriture : Attribute, IResourceFilter
  {
       private readonly IMemoryCache _cache;

  // 注入MemoryCache
       public CustomResourceFilterAttriture(IMemoryCache cache)
      {
           _cache = cache;
      }

       public void OnResourceExecuted(ResourceExecutedContext context)
      {
           string path = context.HttpContext.Request.Path;
           string route = context.HttpContext.Request.QueryString.Value;
           string key = path + route;
           _cache.Set(key,context.Result);
      }
 
       public void OnResourceExecuting(ResourceExecutingContext context)
      {
           string path = context.HttpContext.Request.Path;
           string route = context.HttpContext.Request.QueryString.Value;
           string key = path + route;
           if(_cache.TryGetValue(key, out object value))
          {
               context.Result = value as IActionResult;
          }
      }
  }  

3.在要使用的方法上添加特性

[TypeFilter(typeof(CustomResourceFilterAttriture))]
        [HttpGet("GetCache")]
        public IActionResult GetCache(string name)
        {
            return new JsonResult(
                new
                {
                    name = name,
                    age = 18,
                    sex = true
                });
        }
  • MemoryCache不是分布式缓存,是基于程序存储在内存中的;是微软封装好的内存缓存库,合理利用CPU,性能好;由于基于程序分配内存,使用时避免了网络通讯的消耗。
  • Memcached是分布式缓存,是存储在公共机器上的,供不同程序使用的,存在一定的网络传输消耗。

本文系作者 @ 原创发布在 IT梦。未经许可,禁止转载。

喜欢()
0 0 投票数
Article Rating
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
热门搜索
27 文章
12 评论
76 喜欢
Top
0
希望看到您的想法,请您发表评论x
()
x