【问题标题】:multilevel caching with Ruby on Rails 3使用 Ruby on Rails 3 进行多级缓存
【发布时间】:2011-08-18 04:54:03
【问题描述】:

我在很多地方搜索过这个问题,但没有找到答案。 根据 rails 指南和有关缓存的类似材料,rails 可以使用其中一种缓存类型:内存中、文件存储、memcached、自定义缓存类等。

但是如果我想在一个应用程序中使用两种或三种缓存类型,具体取决于缓存的实体呢?

例如(一个高负载的新闻聚合器):我有几个前端 rails 服务器,几个带有分片 MongoDB 的服务器和一个用于 memcached 的服务器。如果我想做

  1. 前端的每节点内存缓存,用于新闻部分和支持数据的经常使用的微小集合(以避免网络延迟从 memcached 获取数据)

  2. memcached 用于阅读最多的最新消息

  3. 存档新闻的文件存储缓存(可以存储在一个为所有前端挂载的网络文件存储中)(必须缓存以避免频繁的标记处理,但太大而无法存储在内存中)

【问题讨论】:

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


    【解决方案1】:

    AFAIK没有缓存插件或机制可以实现您想要的精细定制。您始终可以编写自己的缓存存储,根据缓存的内容委托给另一个子系统。

    【讨论】:

      【解决方案2】:

      我也在寻找同样的东西。 'level2' 可能是您正在寻找的。回购:https://github.com/mezis/level2 Rubygems 条目:https://rubygems.org/gems/level2/versions/0.2.5 一个大问题是它不适用于 dalli,这是与 memcached 交互的正常方式:https://github.com/mezis/level2/issues/6

      我还发现了层蛋糕,但似乎被遗弃了:https://github.com/phaza/layercake

      我真希望 Rails 有这样的东西,这似乎是一个共同的愿望。

      我正在考虑自己编写类似的东西,或者至少为本地内存缓存创建一个单独的帮助程序,然后将“普通”Rails 缓存系统用于“普通”缓存调用,作为解决此问题的一部分: https://github.com/coreinfrastructure/best-practices-badge/issues/1481

      【讨论】:

        猜你喜欢
        • 2012-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-24
        • 2013-12-07
        • 2015-01-25
        • 2011-09-08
        • 2013-11-15
        相关资源
        最近更新 更多