1:通过服务注入的方式获取的内存缓存是单例的,所以通过构造器获取的缓存对象来自于同一个实例,因此它们之间共享同一片缓存区域。
public void ConfigureServices(IServiceCollection services)
{
// 启用本地缓存
services.AddMemoryCache(); //单例生命周期
}
2:通过自建实例创建的内存缓存之间是相互隔离的,他们拥有各自的内存区域,并不共享。
public string Get()
{
//创建内存缓存1
var _memoryCache = new MemoryCache(new MemoryCacheOptions());
string str = "hhhh";
int key = 1;
_memoryCache.Set(key, str, TimeSpan.FromMinutes(10));
Console.WriteLine(_memoryCache.Get<string>(1));
//创建内存缓存2
var _memoryCache2 = new MemoryCache(new MemoryCacheOptions());
Console.WriteLine( "获取缓存:" + _memoryCache2.Get<string>(1)); //拿不到_memoryCache 中的缓存对象
return _memoryCache2.Get<string>(1);
}