在我的应用程序中,每个对象(表)都有一个唯一的id.
现在,正因为如此,当使用看到id时,我知道它是什么对象类型,无论是用户还是酒店.
我想知道是否可以在多态关联中保存item_type的查找,在内存中使用id序列查找修补查找,从而节省DB和索引中的空间.
可以这样做吗?
我正在使用Rails 3.0.9,Ruby 1.9.2
我有一个非常具体的缓存情况.我们使用多种解决方案进行缓存,我想知道在用户操作上使缓存无效的最佳解决方案是什么.
缓存是这样的
第一层:CDN将整个页面缓存为已注销用户的HTML
第二层:memcached中的完整页面缓存,用于注销用户我有第二层的原因是响应边缘,有时并非所有边缘都被缓存,所以我也想从缓存中"回答"边缘.
第三层:缓存登录用户的HTML部分和数据库数据.
我的问题是我的失效过程现在非常基于第三层,我没有足够好地回答第二层和第一层.
我的问题是:什么是从完全没有与URL耦合的缓存键使完整URL上的缓存无效的最佳方法?例如,如果我有旅行计划,在旅行计划内有评论,我想在用户评论新评论时使整页旅行计划URL无效.
注释模型没有URL,"父"也没有URL,同样的注释也会在城市页面中显示,所以它完全是一个可重用的对象和部分.
我在生产网站上使用Resque.
当我部署时,我希望GOD停止所有工作者然后重新启动它们,因为有时我们会更改类的代码并重新排队失败的作业.
问题是,当我做上帝停止resque,耙子实际上没有停止,工人仍然活着并使用旧代码,这为我创造了各种各样的问题.
即使我做"上帝终止",它也不会杀死工人.
现在,我正在使用shell脚本来杀死工作者,但由于我有多个服务器,所以在所有生产服务器上进行操作时,这几乎是一件痛苦的事.
这是我的上帝配置文件:
rails_env = ENV['RAILS_ENV'] || "production"
rails_root = ENV['RAILS_ROOT'] || "/mnt/data-store/html/gogobot/current"
num_workers = rails_env == 'production' ? 5 : 2
num_workers.times do |num|
God.watch do |w|
w.dir = "#{rails_root}"
w.name = "resque-#{num}"
w.group = "resque"
w.interval = 2.minutes
w.env = {"QUEUE"=>"duplicate_merging,facebook_wall_posts,generic,mailer,notifications,realtime,scoring_system,signup,social_graph_facebook,social_graph_foursquare,social_graph_twitter,user_info,user_score", "RAILS_ENV"=>rails_env, "PIDFILE" => "#{rails_root}/tmp/resque_#{w}.pid"}
w.pid_file = "#{rails_root}/tmp/resque_#{w}.pid"
w.start = "cd #{rails_root}/ && rake environment resque:work QUEUE=duplicate_merging,facebook_wall_posts,generic,mailer,notifications,realtime,scoring_system,signup,social_graph_facebook,social_graph_foursquare,social_graph_twitter,user_info,user_score RAILS_ENV=#{rails_env}"
w.log = "#{rails_root}/log/resque_god.log"
w.uid = 'root'
w.gid = 'root'
# restart if memory gets too high
w.transition(:up, …Run Code Online (Sandbox Code Playgroud) 我试图找出查询mongo的最佳方法.我正在使用Mongoid和最新的mongo版本
我想要做的就是像这样查询
user_id => [数组的数组]和user_type =>"some_type"或者user_id => [数组的数组]和user_type =>"some_type"
我怎么能在Mongo/Mongoid中做到这一点?