0

我计划在我的应用程序中使用 Redis 缓存,数据大小可能在 10KB - 500 MB 之间。如果我使用 Redis 中的大键/值条目,Reding 和保存数据可能会出现性能问题,这意味着我必须通过网络将更多数据从服务器传输到客户端,我可能会遇到以下后果。

  1. 传输数据需要更多时间,因此客户端可能需要配置更高的超时值以允许额外的传输时间。
  2. 向服务器发出的请求可能会卡在大传输后面并导致其他请求超时。
  3. 用于传输此数据的网络缓冲区可能会影响客户端或服务器上的可用内存,这可能会加剧围绕碎片描述的可用内存问题。
  4. 如果这些大键/值项被频繁访问,如果我们一遍又一遍地重复传输这些数据,就会放大影响。

所以我想在 Redis 缓存中进行分区。

示例:我有一个端点(GetEmployees(一些计算碰巧得到所有员工)),它返回大约 500 条大小为 400 MB 的记录(示例)。在添加任何新员工之前,我都会获得相同的数据,因此我希望拥有缓存机制,以便我可以存储这些记录并从缓存中获取它,而不是一次又一次地进行计算。

如果我将所有记录存储在 Redis 的单个分片中,将面临上述问题。

键/值:GetEmplyeesTodayDate/ {记录列表}

因此,我想在从 Redis 读取数据时拆分数据并跨分片获取所有记录。

使用相同/多个键在 Redis 中存储所有 500 条记录并检索它们的最佳方法是什么?

4

1 回答 1

0

正如 Anurag 所提到的,您将使用对 Redis 缓存进行分区,但是当分区与Azure Redis 缓存集群结合使用时,您可以确保缓存本身不会出现吞吐量问题:如何配置 Redis 集群

在MSDN 论坛中提出了同样的问题。

于 2019-04-25T19:05:11.830 回答