【发布时间】:2017-05-22 19:46:42
【问题描述】:
假设用户可以订阅其他用户的帖子、标签或他可能想要的任何其他类似条件。
在他的提要上,应用返回用户之间相同的“主要提要”,并且还根据他的“订阅”标准提供提要项目(提要通过 API 提供)。
Feed 数据是一种实体(帖子)。而且该提要是无限滚动(分页)的,这增加了额外的复杂性。
如果用户之间的提要相同,缓存是微不足道的,但在个性化提要的情况下,我想不出最好的方法是什么。
每个“页面”都按日期范围偏移(特定日期)。
我能想到的一种方法是:
'same feed' 部分由日期键(一些表示日期范围的键)缓存。
个性化帖子提要项将单独缓存。然后我根据标准保留帖子ID数组,例如创作用户,或分配给喜欢的标签(用户#1:[10,15,23,64 ...],标签#FOO:[1,2,5,10 ...]),以及分隔符它们按日期范围(根据它们适合的分页部分),然后通过 mget/getMulti 从 Redis 或 Memcahed 的 id 获取这些帖子并返回组合结果。
但这种方法对我来说有点“不正确”,因为它是如此复杂。 要么, 是否在没有缓存的情况下使用经过微调的数据库(比如说在 RAM 中运行,或完全缓冲) - 在这种情况下可行(渲染/序列化时间并不重要,因为我几乎将其原始传递给客户端)?
我寻求与平台/缓存层无关的一般策略建议。
【问题讨论】:
-
在 redis/memcache 中使用优化的键空间看起来是一种可行的设计。您将如何准备帖子提要?对每个请求还是事先准备好?
-
它是为每个请求准备的,因为它是高度动态的。
标签: database caching redis memcached