我是DotNet Core的新手。我使用.NEt Core创建了一个WEB API。我需要在此API中实现缓存管理器。我有一组记录会在一天内更新一次,所以我希望这些数据存储在内存中的对象中,并且只有在检测到更改时(或者以一定的间隔,比如3小时)才调用数据库。 我已经尝试在我的应用程序中实现逻辑。但是想知道我们是否已经有特定的包装!
请帮帮我。
提前致谢。
答案 0 :(得分:8)
Asp.Net有一个可以使用的内置缓存库。它们也可以在.Net核心中使用,例如你可以阅读有关therm here的信息。这里描述的时间太长了,但通常你需要在服务中注册它:
IMemoryCache
然后您可以在服务中注入Microsoft.Extensions.Caching.Memory
。它需要NuGet包// Initialize First Text View
TextView firstBoxTextView = (TextView) v.findViewById(R.id.first_box);
// Set click listener for the First Text View
firstBoxTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Change the theme
}
});
。
答案 1 :(得分:1)
您可以使用icrosoft.Extensions.Caching.Memory Nuget Package中提供的asp.net缓存。如果不可用,请安装此软件包。
然后你需要注册缓存服务
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
}
将缓存服务用于控制器
public class CacheController : Controller { private readonly IMemoryCache _cache; public TokenController(IMemoryCache cache) { _config = config; } }
使用以下功能获取或设置缓存数据
public T GetOrSet<T>(string cacheKey, Func<T> getItemCallBack)
{
var item = _cache.Get<T>(cacheKey);
if (item == null)
{
item = getItemCallBack();
_cache.Set(cacheKey, item, CacheKeysWithOption.CacheOption);
}
return item;
}
使用GetOrSet
public IActionResult CacheTryGetValueSet()
{
var list = GetOrSet(CacheKeysWithOption.Entry, GetStringList);
return new JsonResult(list);
}
[NonAction]
public List<String> GetStringList()
{
List<String> str = new List<string>()
{
"aaaaa",
"sssdasdas",
"dasdasdas"
};
return str;
}