.NET Core 中是否有简单的内存缓存代码的标准方法?

问题描述 投票:0回答:1

我有一个

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 + "";
}
.net-core caching in-memory memorycache in-memory-cache
1个回答
0
投票

下午好,我使用这个类:

    private IMemoryCache _memoryCache;

    public FabricaHub(IMemoryCache memoryCache)
    {
        _memoryCache = memoryCache;
    }

设置缓存值:

    _memoryCache.Set("key", value);

获取缓存值:

   _memoryCache.TryGetValue("key", out value);

我希望它对你有用,问候

© www.soinside.com 2019 - 2024. All rights reserved.