WebAPI性能优化小结

本文总结了WebAPI性能优化的几种策略,包括本地缓存和分布式缓存(如Redis)。对于本地缓存,讨论了其优缺点,如内存占用问题及其解决方案,并展示了如何使用MemoryCache进行缓存操作。分布式缓存部分介绍了Redis的工作原理、适用场景和使用方法。最后提到了响应缓存和数据压缩以进一步提高性能。
摘要由CSDN通过智能技术生成

一、本地缓存
设计思路
查询数据时先查看本地缓存中是否有数据,如果有数据直接返回,如果没有数据,到数据库查询后添加到本地缓存,并将数据返回。
优缺点
缺点
Memory是服务器内存的缓存,如果并发量大并查询的数据不一致,会造成内存非常大,同时会造成GC不断的回收内存,由于Memory内部使用的是静态变量,造成内存无法回收,GC每回收一次,就会耗费一次CPU资源,如果GC回收的频率比较大,大么耗费的CPU资源就较大。
解决方案:1.设置缓存时间。2.设置缓存大小。
优点
数据读写速度时间缩短,性能提升。
使用
安装Nuget包
Microsoft.Extensions.Caching.Memory

Startup.cs注册
//ConfigureServices方法中注册缓存服务
Service.AddMemoryCache(options=>{
options.SizeLimit = 1024*1024*100; //设置缓存大小
});

使用方法
//在构造方法中注入
private readonly IMemoryCache memoryCache;
构造函数 (IMemoryCache _memoryCache)
{
memoryCache =_memoryCache;
}
//测试对象
Person per = new Person();
//查询缓存方法
//memoryCache.Get<Person>(key);
//为了放防止多线程并发
bool flag = memoryCache.TryGetValue<缓存对象>(key,out per);
//true:有数据 false:无数据
//限制缓存大小
var cacheEntryOptions = new MemoryCacheEntryOptions().
//设置单个缓存大下
SetSize(1024).
//设置过期时间 自动失效
SetSlidingExpiration(TimeSpan.FromSeconds(3));
//添加缓存
memoryCache.Set<Person>(key,value,cacheEntryOptions);

二、分布式缓存
简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

原理
Redis数据库中的数据时存放在内存中,并非磁盘中,不需要把每次查询进行IO操作。把使用的数据查询加载的内存中,在内存中操作,提升查询效率。
使用场景
1.任何可丢失数据。2.不经常变动的数据。
使用方式
在appsetting.json添加Redis配置
"ConnectionStrings: RedisCaching节点配置信息

{
  "ConnectionStrings": {
    "ConnectionString": "Data Source=127.0.0.1;Initial Catalog=db;User ID=uid;Password=123456;Pooling=True;Max Pool Size=512;Connect Timeout=500;",
    "JwtSetting": {
      "Issuer": "jwtIssuer", //颁发者
      "Audience": "jwtAudience", //可以给哪些客户端使用
      "SecretKey": "chuang

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王甜甜(.NET)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值