活动记录缓存昂贵的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了活动记录缓存昂贵的方法相关的知识,希望对你有一定的参考价值。

  1. class ActiveRecord::Base
  2. @@cache_store = nil
  3. def self.cache_store
  4. @@cache_store ||= ActionController::Base.cache_store
  5. end
  6.  
  7. def self.caches(method_name, key = nil, options = {}, &block)
  8. if key.is_a?(Hash)
  9. options = key
  10. key = nil
  11. end
  12. define_method "cached_#{method_name}" do
  13. key = instance_eval(&block) if block
  14. self.class.cache_store.fetch("#{method_name}:#{key}", options) { send(method_name) }
  15. end
  16. end
  17. end
  18.  
  19. class MyModel < ActiveRecord::Base
  20. caches(:expensive_query, :expires_in => 15.minutes) { "#{id}:#{id.updated_at.to_i}" }
  21. end

以上是关于活动记录缓存昂贵的方法的主要内容,如果未能解决你的问题,请参考以下文章

使用连接池处理活动记录超时的正确方法是啥?

PostgreSQL 重新排序或提示条件(具有昂贵自定义功能的条件)

在 Web 应用程序中记录用户活动

Rails获取上一个和下一个活动记录对象的最佳方法

Spring 中使用redis缓存方法记录

linux下清除Squid缓存的方法记录