在Azure Redis中对数据进行分区的最佳实践是什么

时间:2019-04-05 09:23:34

标签: azure azure-redis-cache azure-caching redis-cache

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

  1. 传输数据需要花费更多时间,因此客户端可能需要 较高的超时值配置为允许此额外的传输时间。
  2. 发给服务器的请求可能会滞留在大笔传输之后,并导致其他请求超时。
  3. 用于传输此数据的网络缓冲区可能会影响客户端或服务器上的可用内存,这可能会加剧有关分段的可用内存问题。
  4. 如果经常访问这些大型键/值项,那么如果我们一遍又一遍地重复传输这些数据,则会放大影响。

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

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

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

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

因此,我想从Redis读取数据时将数据拆分成多个碎片,并获取所有记录。

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

1 个答案:

答案 0 :(得分:0)

如Anurag所述,您将使用Partitioning a Redis cache,但是当分区与Azure Redis Cache clustering结合使用时,请确保高速缓存本身不会出现吞吐量问题:How to configure Redis clustering < / p>

MSDN forum中提出了相同的问题。