Part4 – (31) 分布式缓存
分布式系统中的内存缓存
如果集群节点的数量非常多的话,这样的重复查询也同样可能会把数据库压垮。
分布式缓存服务器
1、常用的分布式缓存服务器有Redis、Memcached等。
2、.NET Core中提供了统一的分布式缓存服务器的操作接口IDistributedCache,用法和内存缓存类似。
3、分布式缓存和内存缓存的区别:缓存值的类型为byte[],需要我们进行类型转换,也提供了一些按照string类型存取缓存值的扩展方法。
用什么做缓存服务器
1、用SQLServer做缓存性能并不好。
2、Memcached是缓存专用,性能非常高,但是集群、高可用等方面比较弱,而且有“缓存键的最大长度为250字节”等限制。可以安装EnyimMemcachedCore这个第三方NuGet包。
3、Redis不局限于缓存,Redis做缓存服务器比Memcached性能稍差,但是Redis的高可用、集群等方便非常强大,适合在数据量大、高可用性等场合使用。
分布式缓存用法
1、NuGet安装Microsoft.Extensions.Caching.StackExchangeRedis
2、startup管道中配置:
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost";
options.InstanceName = “yzk_”;//避免混乱
});
3、用时间显示测试用法。
Part4 – (32) 分布式缓存操作帮助类
需求:
1、解决缓存穿透、缓存雪崩等问题。
2、自动地进行其他类型的转换。
public interface IDistributedCacheHelper
{
TResult? GetOrCreate<TResult>(string cacheKey, Func<DistributedCacheEntryOptions,
TResult?> valueFactory, int expireSeconds);
Task<TResult?> GetOrCreateAsync<TResult>(string cacheKey,
Func<DistributedCacheEntryOptions, Task<TResult?>> valueFactory, int expireSeconds);
void Remove(string cacheKey);
Task RemoveAsync(string cacheKey);
}
本文版权归个人技术分享站点所有,发布者:chaoqiang,转转请注明出处:http://www.zhengchaoqiang.com/1511.html