【问题标题】:memcached scalability and efficient voting statsmemcached 的可扩展性和高效的投票统计
【发布时间】:2010-09-24 05:27:05
【问题描述】:

在缓存可能每秒都过期的环境中,memcache 的可扩展性如何。事实上,我的问题不仅仅是关于 memcached 的可扩展性,而是关于模型不断变化的情况以及扩展该类型环境的最佳方式。有人可能会说,如果缓存每秒都过期,为什么还要缓存呢。

在一个假设的应用程序中考虑这一点,人们将发布标记为收藏的帖子,让我们假设有成千上万的人不断地将帖子标记为收藏并因此创建了收藏记录。每次插入时,帖子视图都需要更新,以显示有关帖子的当前统计信息、收藏的人数、用户的收藏数量等。

我们认为这可以被缓存以仅显示每 x 分钟拍摄的快照..但是有没有一种好方法可以在 Rails 中使其更实时?

【问题讨论】:

  • 我建议编辑标题。 'memcached 和高效的投票统计数据'

标签: ruby-on-rails performance memcached


【解决方案1】:

试试这样的算法:

  1. 用 +1 票更新帖子的数据库记录
  2. 创建缓存值 ||更新现有缓存 +1 以获取帖子收藏数量
  3. 创建缓存值 ||更新现有缓存 +1 以获取用户喜爱计数

因为缓存没有事务值可能与当前数据库值不一致 - 可能会发生罕见的并行读写竞争情况。但是,一旦缓存条目失效并从 DB 重新计算值,这些不一致就会过期。

在上述场景中缓存扫描操作可能每分钟甚至每小时执行一次 - 取决于统计数据的准确程度。请记住,您不会丢失任何东西 - 所有准确的数据都保存在数据库中。

这里最重要的是用户可以看到投票的实时价值变化。 这里的 Memcached 读/写成本肯定比 DB 低,因为 memcache 只是多访问哈希存储,没有事务。

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2013-01-28
    • 2011-02-06
    相关资源
    最近更新 更多