【问题标题】:Memcached vs Redis as Rails.cache when requiring an LRU cache当需要 LRU 缓存时,Memcached 与 Redis 作为 Rails.cache
【发布时间】:2015-01-18 12:57:15
【问题描述】:

我目前使用 Redis 作为 Sidekiq 的工作队列。我也有兴趣将它用作 Rails.cache 的缓存机制。

推荐的 Rails 缓存机制永远不会使项目过期,并依赖于逐出最近最少使用 (LRU) 的项目。不幸的是,默认情况下,Redis 没有配置为驱逐最近最少使用的项目,而推荐的缓存存储 memcached 是。

此外,驱逐项目不是我希望我的工作队列的行为,并且配置相同的 Redis 实例来执行此操作可能会导致不良结果。我也不希望我的队列与我的缓存共享周期。

在这种情况下,你们会推荐什么?第二个 redis 存储充当缓存并配置了 LRU?还是只用rails推荐的memcached缓存存储,只用redis单独做队列?

我倾向于同时使用 Redis 和 Memcached,尽管有大量堆栈溢出文章建议不这样做。默认情况下支持 LRU eviction 的 memcached 赢得了我的青睐。

一些文章:

在 cmets 中隐藏得更深,海报提到 memcached 的 LRU 驱逐是使用它作为缓存的一个重要原因。

【问题讨论】:

    标签: ruby-on-rails ruby caching redis memcached


    【解决方案1】:

    最终同时使用了 redis 和 memcached。对结果非常满意。

    【讨论】:

      【解决方案2】:

      主要区别在于 Memcached 可以在并行内核/机器上运行,但 Redis 非常轻量和快速,如果它在一台体面的机器上运行,它需要大量负载才能达到其极限,它只使用几个内核,好吧,因为它适用于您,这很好,但是使用两者听起来有点不必要的复杂性,仅此而已。 (即,如果您需要承包商来处理它等,您将需要具有两种技术经验的人,而不仅仅是一种)

      【讨论】:

      • 无论你是使用所有 redis 还是同时使用 memcached 和 redis,都需要两个单独的部署。您不希望缓存影响您的队列,反之亦然。看到 memcached 如何开箱即用地进行 LRU 缓存而 redis 没有,我相信使用这两种不同的技术会更简单。我在两者之间没有遇到任何维护问题,但也许我还没有达到重要的规模。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 2020-12-26
      • 1970-01-01
      相关资源
      最近更新 更多