我们何时不想在Ruby on Rails应用程序中使用memcached?

时间:2020-03-06 14:55:59  来源:igfitidea点击:

假设一个MySQL数据存储,我们什么时候不想在Ruby on Rails应用程序中使用memcached?

解决方案

如果应用程序能够快速处理所有请求,请不要使用memcached。在编写应用程序代码时,添加memcached会带来额外的精神负担,因此除非需要,否则不要这样做。

Scaling的"一个膨胀问题"。

Memcache是​​一个强大的分布式缓存,但它的速度并不比某些内容的本地缓存快。缓存应该使我们避免瓶颈,通常是数据库请求和网络请求。如果我们可以将整个页面作为HTML本地缓存,因为它不会经常更改(不是很动态),那么Web服务器可以比查询内存缓存快得多。如果内存缓存服务器(与大多数内存缓存服务器一样)位于不同的计算机上,则尤其如此。

不利的一面是,有时我会在本地使用memcache而不是其他缓存选项,因为我知道总有一天我需要将其移至其自己的服务器上。

当我们希望对即将到期的事物进行细粒度的控制时。从我的测试来看,memcached似乎只有大约一秒钟的时间分辨率。

EG:如果我们告诉某物在1秒钟内到期,那么它可能会停留1到2秒钟左右。

memcached的主要好处是它是分布式缓存。这意味着我们可以生成一次,并在许多服务器上的缓存中提供服务(这就是创建memcached的原因)。以前的所有答案似乎都忽略了这一点,这使我想知道他们是否曾经不得不构建高度可扩展的应用程序(这正是memcached的用途)

Danga Interactive developed memcached
  to enhance the speed of
  LiveJournal.com, a site which was
  already doing 20 million+ dynamic page
  views per day for 1 million users with
  a bunch of webservers and a bunch of
  database servers. memcached dropped
  the database load to almost nothing,
  yielding faster page load times for
  users, better resource utilization,
  and faster access to the databases on
  a memcache miss.

(我的粗体)

因此,答案是:如果应用程序仅可能部署在单个服务器上。

如果我们可能要使用多个服务器(以实现可伸缩性和冗余性),则memcached(几乎)总是一个好主意。