gpt4 book ai didi

c# - Redis Optimization with .NET,以及如何从 Hash 存储和获取元素的具体示例

转载 作者:IT王子 更新时间:2023-10-29 06:01:46 27 4
gpt4 key购买 nike

我有超过 15000 个 POCO 元素存储在 Redis 列表中。我正在使用 ServiceStack 来保存和获取它们。但是,我对将它们放入网格时的响应时间感到不满意。正如我所读,最好将这些对象存储在散列中 - 但不幸的是,我找不到适合我的案例的任何好例子:(

这是我使用的方法,目的是让它们进入我的网格

public IEnumerable<BookingRequestGridViewModel> GetAll()
{
try
{
var redisManager = new RedisManagerPool(Global.RedisConnector);
using (var redis = redisManager.GetClient())
{
var redisEntities = redis.As<BookingRequestModel>();
var result =redisEntities.Lists["BookingRequests"].GetAll().Select(z=> new BookingRequestGridViewModel
{
CreatedDate =z.CreatedDate,
DropOffBranchName =z.DropOffBranch !=null ? z.DropOffBranch.Name : string.Empty,
DropOffDate =z.DropOffDate,
DropOffLocationName = z.DropOffLocation != null ? z.DropOffLocation.Name : string.Empty,
Id =z.Id.Value,
Number =z.Number,
PickupBranchName =z.PickUpBranch !=null ? z.PickUpBranch.Name :string.Empty,
PickUpDate =z.PickUpDate,
PickupLocationName = z.PickUpLocation != null ? z.PickUpLocation.Name : string.Empty
}).OrderBy(z=>z.Id);
return result;
}
}
catch (Exception ex)
{
return null;
}
}

请注意,我使用 redisEntities.Lists["BookingRequests"].GetAll() 这会导致性能问题(我只想使用 redisEntities.Lists["BookingRequests"] 但我丢失了网格的最后更新 - 编辑后)

我想知道将它们保存到列表中是否是一个好方法,因为对我来说,拥有一个快速的网格非常重要(我现在有 1 秒的分页时间,这是巨大的)。

请指教!

最佳答案

首先你不应该创建一个新的Redis Client Manager就像每次 RedisManagerPool 实例一样,您的应用程序中应该只有一个 RedisManagerPool 的单例实例,所有客户端都是从中解析的。

但否则我会重新考虑您的数据访问策略,批量下载 15K 项不是理想的策略。你可以create indexes by storing ids in Sets或者您可以将项目存储在一个排序的集合中,该集合的值可以像递增的 id 一样进行分页,例如:

var redisEntities = redis.As<BookingRequestModel>();
var bookings = redisEntities.SortedSets["bookings"];

foreach (var item in new BookingRequestModel[0])
{
redisEntities.AddItemToSortedSet(bookings, item, item.Id);
}

这样你就可以批量获取它们,例如:

var batch = bookings.GetRangeByLowestScore(fromId, toId, skip, take);

关于c# - Redis Optimization with .NET,以及如何从 Hash 存储和获取元素的具体示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55607532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com