![](/img/trans.png)
[英]ASP.NET 2 Core 'Application state data' not storing data between requests
[英]Storing data temporarily in an ASP.NET Core application
我正在使用一個單例字典集合來存儲用戶集合,以便用戶可以使用其GUID訪問api來訪問其信用卡詳細信息。
有沒有比使用單例字典集合更安全的數據存儲方式? 它僅用於臨時存儲-不涉及數據庫。
我可能會質疑單個guid是信用卡詳細信息王國的鑰匙...實際上,我也會質疑在任何情況下從API給出完整的信用卡詳細信息。
但是,讓我們假設問題更多是關於臨時存儲的。
在內存中存儲是可以的,但是您會遇到兩個問題。
確實,Redis是一個更好的選擇。 如果您在Windows上,則需要從此處下載redis並進行安裝。 顯然,在部署時,您可以使用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.
}
}
應用程序重新啟動時會發生什么? 之后您不會丟失數據嗎? 如果沒有(您的列表是硬編碼的),我認為收藏沒有錯。 但是,在每個應用程序重新啟動后,您將丟失數據並需要重新輸入,可以嘗試像https://redis.io/一樣緩存用戶集合。 重新啟動應用程序后,您將不會丟失您的收集數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.