我有一个
IHostedService
,它可以将数据库中的引用表保存到.NET Core 6 中的缓存中。这意味着,保存的信息不会更改;这只是一个参考表。尽管可能有多个用户将访问此数据,但数据不会被更改和附加。对我来说这就足够了。
问题:虽然这很简单 - 有没有标准的方法可以做到这一点? (我只是认为数据只是简单地保存在内存中)。是不是不安全啊?有什么想法吗?
启动:
builder.Services.AddMemoryCache();
builder.Services.AddHostedService<InitializeCacheService>();
初始化它:
public class InitializeCacheService : IHostedService
{
private readonly IServiceProvider _serviceProvider;
public InitializeCacheService (IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public Task StartAsync(CancellationToken cancellationToken)
{
using (var scope = _serviceProvider.CreateScope())
{
var repo = _serviceProvider.GetService<IRepository>();
var values = repo.GetValues();
var cache = _serviceProvider.GetService<IMemoryCache>();
cache.Set("ValuesList", values);
}
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
检索缓存:
[HttpGet("{key}")]
public ActionResult<string> Get(string key)
{
// _cache.Count is 0
if (!_cache.TryGetValue(key, out var value))
{
return NotFound($"The value with the {key} is not found");
}
return value + "";
}
下午好,我使用这个类:
private IMemoryCache _memoryCache;
public FabricaHub(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
设置缓存值:
_memoryCache.Set("key", value);
获取缓存值:
_memoryCache.TryGetValue("key", out value);
我希望它对你有用,问候