当前位置:  开发笔记 > 后端 > 正文

在Rails中使用memcached的最佳实践?

如何解决《在Rails中使用memcached的最佳实践?》经验,为你挑选了2个好方法。

由于我们的应用程序中的数据库转换越来越耗时,我们已经开始使用memcached来减少传递给MySQL的查询量.

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

但是,由于缓存是"无声地出现"作为一种解决方法来为应用程序提供更多果汁,我们的许多模型现在包含如下代码:

def self.all_cached

  Rails.cache.fetch('object_name') {

    find(

      :all,
      :include => [associations])

    }

end

随着填充和刷新缓存在应用程序中的几个类中发生,这变得越来越痛苦.

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

我正在考虑使用某种memcached模块,它包含在所有需要的模块中.

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

谢谢

马特



1> Sam..:

我建议检查现有的插件,两个大的插件是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个错误,而且通常是您不想拥有的噩梦.



2> Ryan Bigg..:

是的,我认为将memcached模块包含在您需要的所有模型中是最佳解决方案.你的思路很棒:)


你能推荐一个还是你说从头开始写一个?这个答案似乎并不完整
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有