NetCore缓存——内存缓存(3)

2023-05-16

内存缓存

  • 一、缓存数据类型
  • 二、缓存特性
  • 三、用法

一、缓存数据类型

缓存放到应用程序的内存中。内存缓存中保存的是一系列的键值对。就像Dictionary类型一样。

二、缓存特性

内存缓存保存在当前运行的网站程序的内存中是和进程相关的。因为在web服务器中,多个网站是运行在不同的进程中的,因此不同进程的缓存不会相互影响。而且网站重启后,内存中的缓存会全部清除。

三、用法

1.启用AddMemoryCache()
2.注入IMemoryCache接口:方法TryGetValue,Remove,Set,GetOrCreat,GetOrCreatAsync
3.用GetOrCreatAsync进行讲解

  [HttpGet] 
        [Route("memory")]
        public async Task<ActionResult<Book?>> GetById(long id)
        {
            logger.LogError($"开始执行GetById,id={id}");
            
//使用GetOrCreatAsync
            Book? b =await memoryCache.GetOrCreate("Book"+id,async (e)=>
            {
                logger.LogDebug($"缓存没找到,到数据库找,id = {id}");
                return await BookDB.GetByIdAsync(id);
            });


            logger.LogDebug($"GetById找到结果了,id = {id}");
            if(b == null)
            {
                return NotFound($"找不到id为{id}的书");
            }
            else
            {
                return b;
            }
        }
 public class BookDB
    {
        public static Task<Book?> GetByIdAsync(long id)
        {
            var result = GetById(id);
            return Task.FromResult(result);
        }
        public static Book GetById(long id)
        {
            switch(id)
            {
                case 0:
                    return new Book { Id = 0, Name = "Lty0" };
                case 1:
                    return new Book { Id = 1, Name = "Lty1" };
                case 2:
                    return new Book { Id = 2, Name = "Lty2" };
                case 3:
                    return new Book { Id = 3, Name = "Lty3" };
                default:
                    return null;
            }
        }

在这里插入图片描述
可以到,第一次查询2,3,
和第二次查询2,3的区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NetCore缓存——内存缓存(3) 的相关文章

随机推荐