我有大约3MB的信息非常难以产生。它是在查询完成后连接查询一些非常大的表和繁重处理的组合。最重要的是,经常读取结果信息(每个客户端每分钟4-10次,所有客户端为3000)。
我应该将信息存储在单个密钥下的缓存中,还是应该在每次需要时将其分解并检索N个部分?
详细说明:
- 我不认为这是一个基于意见的问题"因为可以用代码证明存在更好/更糟的情况
- 我不能先发制人地知道哪个"碎片"将包含我需要的信息......将其视为银行对账单,银行经理可以同时查找"转账"并且" $ 1400.00" ...因此我必须检索整个事情以进一步过滤/分类
- 数据不平坦,但 嵌套。大部分物品(约70%只有2升,其余为3升)
- 我使用Redis作为缓存服务器,以及c# - Asp.Net MVC 4
- 过滤是单一来源并应用于4个字段(单个搜索框试图匹配4个字段的值)
- 排序始终按日期
答案 0 :(得分:0)
我应该将信息存储在单个密钥下的缓存中,还是应该在每次需要时将其分解并检索N个部分?
您需要考虑:
max_item_size
,而redis字符串类型为512MB)最重要的是,结果信息经常被读取(每个客户每分钟4-10次,所有客户端为3000)。
仅基于此声明,我的解释是相同信息返回3000次。因此,对于单个密钥,对于N个块,这将是3000个缓存请求,即N * 3000个请求。已经很容易看出哪一个更贵。加上组合N件所需的计算时间。
您可以同时执行这两项操作: