我使用单例字典集合来存储用户集合,以便用户可以使用他们的guid访问api来访问他们的信用卡详细信息。
是否有更安全的方式来存储数据而不是使用单例字典集合?它仅用于临时存储 - 不涉及数据库。
答案 0 :(得分:1)
在信用卡详细信息方面,我可能会质疑单个guid是王国的钥匙......事实上,我也会质疑在任何情况下从API提供完整的信用卡详细信息。
但是,让我们假设这个问题更多的是关于临时存储的问题。
在内存中存储很好,但是你会遇到两个问题。
更好的选择确实是Redis。假设您在Windows上并安装它,则需要下载redis from here。显然,在部署时,您可以使用Azure Redis等。对于代码,幸运的是Microsoft已经为您完成了大部分工作。主要来自这篇文章:http://dotnetcoretutorials.com/2017/01/06/using-redis-cache-net-core/
在.net核心应用中安装此软件包。
Install-Package Microsoft.Extensions.Caching.Redis
在startup.cs的configure services方法中,需要将Redis添加为缓存服务。你是这样做的:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDistributedRedisCache(option =>
{
option.Configuration = "127.0.0.1";
option.InstanceName = "master";
});
}
然后您可以在控制器/服务中询问IDistributedCache。如下所示:
public class HomeController : Controller
{
private readonly IDistributedCache _distributedCache;
public HomeController(IDistributedCache distributedCache)
{
_distributedCache = distributedCache;
}
[HttpGet]
public async Task<string> Get()
{
//You can access _distributedCache here.
}
}
答案 1 :(得分:0)
应用程序重启时会发生什么?那之后你不丢失数据吗?如果不这样(你的列表是硬编码的),我认为收集没什么问题。但是在每次重启应用程序后,您都会丢失数据并需要重新进入,您可以尝试使用https://redis.io/来缓存用户集合。应用程序重启后,您不会丢失收集数据。