Redis添加List

    StackExchange.Redis组件中未提供List<T>直接添加Redis.List的方法,需要手动循环加入。

    

var cacheName = string.Format(GameSalesSystemConsts.CacheDistrbution,userId.ToString(), type.ToString());
var idList = new List<long>();
RedisValue[] redisList = { };

//翻页 先判断是不是第一页
if (page == -1)
{
redisList = await _database.ListRangeAsync(cacheName);
}
else
{
redisList = await _database.ListRangeAsync(cacheName, page * 20, page * 20 + 20);
}

//如果redis中没有数据则加入Redis
if (redisList.Count() <= 0)
{
var data = (await GetByUserIdAsync(userId, type)).Select(p=>p.SourceUserId).ToList();
foreach (var item in data)
{
_database.ListRightPush(cacheName, item);
}
redisList = await _database.ListRangeAsync(cacheName);
}

//从redis中循环取出来List
foreach (var item in redisList)
{
var i = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(item);
idList.Add(i);
}

//IdList取出对应的数据

var amount = await GetAmountBySourceUserId(idList);
var name = await _userService.GetUserNameDescAsync(idList);
var profile = await _userService.GetUserImgDescAsync(idList);

//返回数据结果

List<DistributionOutPut> list = new List<DistributionOutPut>();

for (int i = 0; i < idList.Count; i++)
{
DistributionOutPut output = new DistributionOutPut()
{
rank = i+1,
amount = amount[i].ToString(),
img = profile[i],
name = name[i]
};
list.Add(output);
}

return list;

原文地址:https://www.cnblogs.com/LvJiaXuanBlogs/p/7098884.html