簡體   English   中英

如何使用 StackExchange.Redis 存儲列表?

[英]How can I store a list using StackExchange.Redis?

我將StackExchange.Redis (1.2.1 版)與 ASP.NET MVC C# 應用程序一起使用。 我能夠使用StackExchange.Redis存儲和查看數組和字符串。 但是,我無法找出存儲列表的方法。 有什么辦法嗎? 如果沒有,您能否建議StackExchange.Redis一些好的替代方案來完成此要求?

我建議你使用StackExchange.Redis.Extensions ,然后你可以這樣做:

var list = new List<int> { 1, 2, 3 };
bool added = cacheClient.Add("MyList", list, DateTimeOffset.Now.AddMinutes(10));

並檢索您的列表:

var list = cacheClient.Get<List<int>>("MyList");

嚴格來說,Redis 只存儲字符串,而一個List<MyObject> ,顯然不是字符串。 但是有一種方法可以可靠地實現您的目標:將您的列表轉換為字符串。

要存儲List<MyObject> ,首先使用JsonConvert等工具將其序列化為字符串,然后將其存儲在 redis 上。 檢索時,只需將其反序列化...

快進 3 年以上,我希望在 .NET 核心中使用 StackExchange.Redis 做類似的事情,所以留在這里以防萬一有人想做同樣的事情。

有“StackExchange.Redis.Extensions.Core”,它允許存儲和檢索如下。 將此 nuget 與“StackExchange.Redis.Extensions.AspNetCore”和“StackExchange.Redis.Extensions.Newtonsoft”一起使用

private readonly IRedisCacheClient _redisCacheClient;

public ValuesController(IRedisCacheClient redisCacheClient)
        {
            _redisCacheClient = redisCacheClient;
        }

public async Task<List<int>> Get()
        {
            var list = new List<int> { 1, 2, 3 };
            var added = await _redisCacheClient.Db0.AddAsync("MyList", list, DateTimeOffset.Now.AddMinutes(10));
            return await _redisCacheClient.Db0.GetAsync<List<int>>("MyList");
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM