【问题标题】:How to cache an arbitrary object in Rails(time-based)?如何在 Rails 中缓存任意对象(基于时间)?
【发布时间】:2012-01-04 10:00:57
【问题描述】:

我阅读了官方指南。它说有page cacheaction cachefragment cache,但它们不是我想要的。

我只是喜欢缓存一个对象,而不是整个页面或视图片段,就像这个伪代码:

def show
  cache @ads, :expires_in => 1.hour do
    @ads = Advertisement.all
  do
end

有可能吗? memcacheredis?

【问题讨论】:

  • 缓存对象意味着序列化(通常通过 Marshal.dump/Marshal.load)。请小心,因为某些对象无法序列化。其他一些具有大型对象图(指向其他大型对象的属性和变量),序列化/反序列化既昂贵又占用比您预期的更多空间。例如,通过将 ActiveRecord 对象序列化到 redis/memcache 来“缓存”它们不是一个好主意。

标签: ruby-on-rails caching memcached redis


【解决方案1】:
Rails.cache.write(cache_key, your_value, expires_in: 10.seconds)

Rails.cache.readh(cache_key)

【讨论】:

  • 您能否详细说明一下您的代码,或许可以通过解释一下?
【解决方案2】:

试试这个:

#To cache the object
Rails.cache.write('cache-key', object)

#Load the object from the cache
Rails.cache.read('cache-key')

【讨论】:

    【解决方案3】:

    查看lawnchair gem 以在 Redis 中缓存对象。

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 1970-01-01
      • 2011-04-21
      • 2010-10-01
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多