【发布时间】:2019-08-27 03:59:02
【问题描述】:
我计划在我的应用程序中使用 Redis 缓存,数据大小可能在 10KB - 500 MB 之间。 如果我使用 Redis 中的大键/值条目,Reding 和 Saving data 可能会出现性能问题,这意味着我必须通过网络将更多数据从服务器传输到客户端,并且可能会产生以下后果。
- 传输数据需要更多时间,因此客户端可能需要 配置更高的超时值以允许额外的传输时间。
- 向服务器发出的请求可能会卡在大传输后面并导致其他请求超时。
- 用于传输此数据的网络缓冲区可能会影响客户端或服务器上的可用内存,这可能会加剧围绕碎片描述的可用内存问题。
- 如果这些大型键/值项被频繁访问,如果我们一遍又一遍地重复传输这些数据,就会放大影响。
所以我想在 Redis 缓存中进行分区。
示例: 我有一个端点(GetEmployees(一些计算碰巧得到所有员工)),它返回大约 500 条大小为 400 MB 的记录(示例)。在添加任何新员工之前,我都会获得相同的数据,因此我希望拥有缓存机制,以便我可以存储这些记录并从缓存中获取它,而不是一次又一次地进行计算。
如果我将所有记录存储在 Redis 的单个分片中,将面临上述问题。
键/值:GetEmplyeesTodayDate/ {记录列表}
所以,我想在从 Redis 读取时拆分数据并跨分片获取所有记录。
用相同/多个键将所有 500 条记录存储在 Redis 中并检索它们的最佳方法是什么?
【问题讨论】:
-
您可以根据自己的可行性参考三种分区机制中的任何一种:服务器端分区、客户端分区或代理辅助分区。您可以参考此文档以获取更多详细信息:docs.microsoft.com/en-us/azure/architecture/best-practices/…
标签: azure azure-redis-cache azure-caching redis-cache