C#之缓存

原文链接:https://zhuanlan.zhihu.com/p/657458522

缓存指在中间层中存储数据的行为,该行为可使后续数据检索更快。 从概念上讲,缓存是一种性能优化策略和设计考虑因素。 缓存可以显著提高应用性能,方法是提高不常更改(或检索成本高)的数据的就绪性

既然缓存是是一种性能优化策略,那么就得考虑一下用在什么地方了。

我们先顺一下一般情况,我们是如何获取到数据的

UI展示层-->业务层-->数据库层-->然后执行SQL,从数据库获取数据-->返回到业务层-->返回到UI,进行展示

好了..这个时候,有一个场景,登录一个系统的时候,用户数据是不是基本上不会变化的... 你登录到系统里面,菜单是不是分配完成之后,也是基本上不会变化的

那么,每次登录我们都要去数据库查询一次 刷新页面也需要去数据库从新加载菜单,如果这个时候 你一分钟刷新60下...这酸爽..想想就很刺激

那么这个时候....引用这个性能优化策略 是什么情况呢? 我们把用户数据 或者 菜单数据 放到缓存里面...当我们需要这一部分的数据的时候 从缓存中拿 直接返回给前端 这样 数据库压力减小了...响应也变快了 性能就上来了

用上缓存之后 我们在顺一下请求情况

UI展示层-->业务层-->数据库层-->然后执行SQL,从数据库获取数据--->加入缓存->返回到业务层-->返回到UI,进行展示

我们加了一个缓存 第一次我们去数据库拿数据 拿到之后 放入缓存 然后返回展示层 这个时候 我们还需要就先去缓存里面查查看有没有这个缓存 有就直接返回了

如下图:

按照当前的业务形式 还有一个形式就是热点缓存...比较热门的数据 还可以在加一层缓存 就是缓存的缓存 当然这个还是需要看具体的业务

目前 经常使用的缓存有两种 一个是微软的Cache

  • System.Runtime.Caching.MemoryCache
  • Microsoft.Extensions.Caching.Memory.MemoryCache

还有一个是redis 很热门的一个内存数据库

使用上都差不多 根据Key进行查询和存储 redis支持数据类型比较多 也支持持久化 具体可以看看其他相关资料

微软的呢就比较人性了...简单好用,双手奉上链接

https://learn.microsoft.com/zh-cn/dotnet/core/extensions/caching

 

posted @ 2024-07-01 12:48  yinghualeihenmei  阅读(8)  评论(0编辑  收藏  举报