【发布时间】:2016-07-05 10:21:56
【问题描述】:
据我了解,memcached主要是用来缓存本地内存中的键值对象,以加快访问速度。
但是在 heroku 这样的平台上,要使用 memcached,您必须选择像 Memcachier 这样基于云的附加组件。我不明白这为什么有用?网络延迟比访问本地内存要高几个数量级,而且完全不可预测。
那么我错过了什么?
【问题讨论】:
标签: caching heroku redis memcached
据我了解,memcached主要是用来缓存本地内存中的键值对象,以加快访问速度。
但是在 heroku 这样的平台上,要使用 memcached,您必须选择像 Memcachier 这样基于云的附加组件。我不明白这为什么有用?网络延迟比访问本地内存要高几个数量级,而且完全不可预测。
那么我错过了什么?
【问题讨论】:
标签: caching heroku redis memcached
在适用的用例中,例如访问基于磁盘的远程 RDBMS 或执行昂贵的计算,网络延迟比替代方案低几个数量级。此外,虽然网络通常不可靠,但在正常运行期间,您仍然会得到亚毫秒级的延迟。
也就是说,通常本地缓存在延迟方面优于远程缓存,但另一方面,扩展可能会出现问题。
编辑:回答 OP 的评论。 您基本上可以将基于磁盘的数据库视为磁盘中数据的内存缓存 - 但数据库服务器的 RAM 是有限的(与任何其他服务器一样)。因此,外部缓存用于减轻部分压力,减少对数据库服务器资源的争用,并将其释放给其他任务。
至于延迟,是的 - 我指的是 AWS 的网络。虽然我对 Memcachier 的报价不太熟悉,但我们(Redis Labs)确保我们的 Memcached Cloud 和 Redis Cloud 实例与 Heroku 的 dyno 位于同一数据区域,以确保尽可能降低延迟。此外,我们还有一个可用区映射实用程序,它可以让应用程序和缓存实例驻留在同一个区域内以实现相同的目的。
【讨论】: