我们何时不想在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(几乎)总是一个好主意。