Performance 可以这样使用memcache吗?或者需要重新构建系统架构?

Performance 可以这样使用memcache吗?或者需要重新构建系统架构?,performance,architecture,memcached,scalability,Performance,Architecture,Memcached,Scalability,我需要为多个用户计算多个项目的“分数”。每个用户都有许多独特的分数,计算可能需要大量的时间/处理器。(慢度不在数据库端)。为了解决这个问题,我大量使用memcached。如果没有memcache,一些页面需要10秒才能加载!Memcache似乎工作得很好,因为分数是非常小的信息,但计算起来需要一段时间。实际上,我将密钥设置为永不过期,然后在偶尔的情况下删除它们,分数会发生变化 我正在进入这个产品的一个新阶段,并且正在考虑重新设计整个产品。似乎有一种方法可以迭代计算这些值,然后将它们存储在本地字段

我需要为多个用户计算多个项目的“分数”。每个用户都有许多独特的分数,计算可能需要大量的时间/处理器。(慢度不在数据库端)。为了解决这个问题,我大量使用memcached。如果没有memcache,一些页面需要10秒才能加载!Memcache似乎工作得很好,因为分数是非常小的信息,但计算起来需要一段时间。实际上,我将密钥设置为永不过期,然后在偶尔的情况下删除它们,分数会发生变化

我正在进入这个产品的一个新阶段,并且正在考虑重新设计整个产品。似乎有一种方法可以迭代计算这些值,然后将它们存储在本地字段中。这将有点类似于现在发生的事情,只是值更新会更快,缓存将在真实的数据库中,管理它将需要更多的工作(我认为我仍然会在上面使用memcache)

如果重要的话,它全部是python/django


打算在缓存上这样做是不是很糟糕?可以吗?为什么?我是否应该尝试重新构建东西?

如果它没有损坏……不要修复它;^)看来你的方法行得通,所以我要说坚持下去。您可以看看memcachedb(或tokyo cabinet),它是memcache的持久版本。这样,当memcache机器崩溃并重新启动时,它不必重新计算所有值。

您在这里应用了几种架构模式,它们中的每一种都有自己的位置。这里没有足够的信息让我来评估您当前的解决方案是否需要重新构建,或者您的想法是否可行。在我看来,随着您对用户需求的理解不断加深,您可能需要改进

一如既往,原型,度量性能,考虑复杂性和性能之间的权衡——你不需要尽可能快,只要足够快。


各种形式的缓存通常是良好性能的关键。这里的问题是,坚持被欺骗的、被欺骗的价值观是否有好处。如果它们随着时间的推移保持稳定,那么这通常是一种有效的策略。在数据库模式中是保留缓存还是为缓存留出空间可能取决于访问模式。如果存在各种查询路径,那么精心设计的数据库方案可能是合适的。

与其使用memcached,不如尝试将计算出的分数存储在与其他数据相同的位置;这可能更简单,需要更少的盒子

Memcached不一定是一切的答案;它适用于需要高度读取刻度的系统。这听起来像是在你的情况下,它不需要,它只需要更有效一点