5.缓存

作者: 落地成佛 | 来源:发表于2017-08-25 17:28 被阅读38次

    一、概述

    缓存采用的是MemoryCache来实现。分两种:
    第一种:定时缓存
    第二种:实体缓存

    二、使用

    2.1定时缓存

    2.1.1 根据需要可在PreInitialize进行配置时效性

    //对所有缓存的配置
    Configuration.Caching.ConfigureAll(cache =>
    {
    cache.DefaultSlidingExpireTime = TimeSpan.FromHours(2);
    });
    //对指定缓存的配置
    Configuration.Caching.Configure("MyCache", cache =>
    {
    cache.DefaultSlidingExpireTime = TimeSpan.FromHours(8);
    });
    

    2.1.2调用缓存

            private readonly ICacheManager _cacheManager;
            public TasksController( ICacheManager iCacheManager)
            {
                _cacheManager = iCacheManager;
            }
            public ActionResult Index()
            {
                var data = _cacheManager.GetCache<string, IList<TaskDto>>("ControllerCache")
                                        .Get("Index", () => _taskAppService.GetAllTasks());
                return View(data);
            }
    

    2.2Entity Caching

    Entity Caching可以缓存实体,当实体发生改变时,会自动更新缓存。

    2.2.1创建缓存项

         [AutoMapFrom(typeof(Task))]
         public class TaskCacheItem
        {
            public string Title { get; set; }
    
            public string Description { get; set; }
        }
    

    2.2.2创建缓存类接口

        // 面向接口编程,用于注入
         public interface ITaskCache:IEntityCache<TaskCacheItem>
        {
        }
    

    2.2.3创建缓存类

      //实现接口ITransientDependency就为了用于ITaskCache能自动注入 
     //实体缓存主要点就是:继承 EntityCache
       public class TaskCache : EntityCache<Task, TaskCacheItem>, ITaskCache,ITransientDependency
        {
            public TaskCache(ICacheManager cacheManager, IRepository<Task> repository) : base(cacheManager, repository)
            {
            }
        }
    

    2.2.4演示调用实体缓存

           //添加断点检测到只访问一次数据库,其余都是访问缓存
            private readonly ITaskAppService _taskAppService;
            public TasksController(ITaskAppService taskAppService)
            {
                     _taskAppService = taskAppService;
            }
            public ActionResult GetTask()
            { 
                var data = _taskAppService.GetTaskById(1);
                return View(data);
            }
    

    三、省略

    暂时不深入 redis Cache

    相关文章

      网友评论

        本文标题:5.缓存

        本文链接:https://www.haomeiwen.com/subject/xlfpdxtx.html