【发布时间】:2014-09-11 12:09:22
【问题描述】:
我需要一些关于缓存可更新新闻提要的最佳方法的建议。
请,请不要“Fanboy”回答 - 不要寻找关于“最佳”系统的主观意见,只是寻求一些符合以下要求的技术建议。因此,请分享您在现实世界中使用过的东西,即使您更喜欢其他解决方案。
我有一个基于 Rails 的新闻提要(Neo4j 数据库),虽然性能很好,但我想缓存它,这样服务器就不会因为提供实时提要而陷入困境。
要求:
简单的片段更新:我想轻松更新部分用户的新闻源 基于特定触发器的缓存,例如,当用户编辑时 他们的状态更新 - 我不想重新生成用户的整个 缓存中的新闻提要,而我只想更新那个 特定用户提要的“片段”或部分。而且我不想跳过箍来尝试这样做。
删除:如果有人删除活动,我只想删除该活动 在系统最终为该用户刷新整个提要之前,从他们的新闻提要中删除。
EASY RETRIEVAL:我想以这样一种方式检索缓存,即 控制器/模型可以轻松读取它们并将它们传递给视图,而无需 意见的任何修改。
持久性:如果我需要重新启动缓存,它应该加载 从磁盘缓存。这意味着它应该将缓存的条目保存到磁盘。
SPEED:鉴于它必须能够更新缓存的片段 新闻提要,会有某种形式的性能冲击。但 我需要速度..
哪些缓存技术可以提供这样的功能? Redis、MongoDB、Memcached 能满足这些要求吗?还有哪些其他选择? (CouchDB、东京文件柜等)..
本着 Stack Overflow 的精神,我并不是在询问您更喜欢什么以及为什么更喜欢的主观意见,我只是询问您可能在生产中实际用于完成缓存和更新缓存新闻的候选系统饲料(或任何类似的东西)。
【问题讨论】:
-
MongoDB怎么不持久化? “喜欢”某些东西也是主观的,例如我不喜欢rails,但你显然喜欢。这是一种意见。
-
我说“AFAIK”=据我所知.. 显然我是在要求人们根据经验而不是仅仅因为它们是 MongoDB,就哪些解决方案可行以及为什么可行、Redis 或任何粉丝。
-
你不应该那样使用速记,我其实不知道 AFAIK 是什么,现在我知道了。不仅如此,短手在不同地区可能意味着不同的东西,你应该尝试使用正确的英语。无论如何,无论怎么说,你都会得到一个粉丝男孩的答案。
-
好的 - 我修改了我的问题。对于什么样的系统可以满足这些要求,您有什么建议吗?
-
为什么需要持久性?您说“如果我需要重新启动缓存,它应该从磁盘加载缓存。这意味着它应该将缓存的条目保存到磁盘”但是拥有缓存的全部优势是您不需要持久化它,因为您可以重建它(在发生崩溃或其他情况下)。这是您提出的非常重量级要求,只是为了(过早地?)优化启动时间以重建缓存似乎......
标签: ruby-on-rails mongodb caching redis memcached