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

一、缓存数据类型

缓存放到应用程序的内存中。内存缓存中保存的是一系列的键值对。就像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的区别。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有诗亦有远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值