ASP.NET Core 中的分布式缓存 IDistributedCache
ASP.NET Core 中的分布式缓存 IDistributedCache
ASP.NET Core 中的缓存内存(MemoryCache)
ASP.NET Core 中的分布式缓存
响应缓存在 ASP.NET Core 中的中间件
分布式 Redis 缓存
分布式 SQL Server 缓存
Cache GitHub 地址
Net Framewoke 中常用的缓存有两种: System.Runtime.Caching 和 System.Web.Caching
NET Core 中缓存相关的类库都在:Microsoft.Extensions.Caching
无论选择哪种实现,应用都将使用 IDistributedCache 接口与缓存进行交互。
若要使用 SQL Server 分布式缓存,请添加对 Microsoft.Extensions.Caching.SqlServer 包的包引用。
若要使用 Redis 分布式缓存,请添加对 Microsoft.Extensions.Caching.StackExchangeRedis 包的包引用。
若要使用 NCache 分布式缓存,请添加对 NCache.Microsoft.Extensions.Caching.OpenSource 包的包引用。
IDistributedCache 接口
IDistributedCache 接口提供以下方法来处理分布式缓存实现中的项:
● Get、GetAsync:如果在缓存中找到,则接受字符串键并以 byte[] 数组的形式检索缓存项。
● Set、SetAsync:使用字符串键将项(作为 byte[] 数组)添加到缓存。
● Refresh、RefreshAsync:根据键刷新缓存中的项,重置其可调到期超时(如果有)。
● Remove、RemoveAsync:根据字符串键删除缓存项。
1、缓存穿透
客户度发送了id=-1000的商品id,缓存中没有,数据库也没有,即穿透,即请求了没有的数据。
解决方法:布隆过滤器,有误判率,有3%,bitMap(位数组)
2、缓存击穿:在缓存中没有,在db中有。(热点数据缓存,预热,缓存有效期过期,缓存过期,全部都去了数据查询)
解决方法1:加锁,分布式锁(setnex+lua)
解决方法2:二级缓存,线程,异步
*
*
3、缓存雪崩
解决方法:
*
*
内部缓存,外部缓存,多级缓存
局部页面(Partital Page Cache)、页面缓存(Page Cache)、数据缓存(Data Cache)
一级缓存:
二级缓存:
静态缓存:CDN 是经典代表之作,涉及的开源技术包含apache、Lighttpd、nginx、varnish、squid等。
动态缓存:
1、分布式 SQL Server 缓存
*
2、分布式 Redis 缓存
*
3、分布式内存缓存
*
4、Memory
IMemoryCache Interface
管理 NuGet 程序包
Microsoft.Extensions.Caching.Memory
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
}
MemoryCacheHelper.cs 代码如下
*
*
*
5、Redis
管理 NuGet 程序包 Microsoft.Extensions.Caching,Microsoft.Extensions.Caching.Redis
StackExchange.Redis(免费)
ServiceStack.Redis(商业)
NewLife.Redis
CSRedisCore
————————————————
版权声明:本文为CSDN博主「KingCruel」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/KingCruel/article/details/102580153
更多推荐
所有评论(0)