加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

ruby-on-rails – 在Rails中使用memcached的最佳做法?

发布时间:2020-12-16 05:53:02 所属栏目:安全 来源:网络整理
导读:随着我们应用程序中的数据库转换越来越耗时,我们已经开始使用memcached来减少传递给 MySQL的查询量. 总而言之,它工作正常,真的节省了大量的时间. 但由于缓存是“默默地出现”作为解决方案给应用程序更多的果汁,我们的很多模型现在包含这样的代码: def self.
随着我们应用程序中的数据库转换越来越耗时,我们已经开始使用memcached来减少传递给 MySQL的查询量.

总而言之,它工作正常,真的节省了大量的时间.

但由于缓存是“默默地出现”作为解决方案给应用程序更多的果汁,我们的很多模型现在包含这样的代码:

def self.all_cached

  Rails.cache.fetch('object_name') {

    find(

      :all,:include => [associations])

    }

end

这是越来越多的痛苦,因为填充和刷新缓存发生在应用程序的几个类.

现在,我想知道是否有更好的方法来抽象memcached逻辑,使其在所有需要的模型中更加强大和易于使用?

我正在想一些包含在所有需要的模块中的memcached模块.

但是在玩耍之前,我想:我们先来问专家:-)

谢谢

马特

解决方法

我建议检查现有的插件,两个大的是 cache_fu和 cache money.对于您想要加载模型与其关联超出缓存的用例,我强烈建议您尝试缓存金钱,它几乎自动:
def parent < ActiveRecord::Base
  has_many children
end

def child < ActiveRecord::Base
  index :parent_id
end

#now you can do the following without ever hitting the DB
parents = Parent.find :all
parents.each{ |p| p.children }

Cache Money的最大优势是,当您扩展到数据库复制滞后成为问题的时候,通过缓存写入可以保存您的屁股.这对于Rails尤其重要,其中复制滞后可以轻松导致500个错误,并且通常是您不想拥有的恶梦.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读