我的计数器缓存在负载过重的情况下锁定了该行,所以我找到了 wanelo/counter-cache gem,它似乎非常适合我的问题,但我无法设置它,它一定非常简单,但我看不到它。https://github.com/wanelo/counter-cache我希望它使用我已经工作的延迟工作和 Redis。
在我的配置文件中
Counter::Cache.configure do |c|
c.default_worker_adapter = here??? DelayedJob ??
c.recalculation_delay = 5.hours
c.redis_pool = Redis.new
c.counting_data_store = Counter::Cache::Redis
end
如果我在执行时不把行放c.default_worker_adapter
它说 undefined method 'enqueue' for nil:NilClass
知道发生了什么吗?我应该在工作器适配器中放入什么?似乎什么都不起作用。谢谢你的时间
default_worker_adapter
是将处理更新的类的名称。在 gem 的 github 页面上给出了一个例子。例如,如果你正在使用sidekiq,你可以创建sidekiq worker class并随心所欲地命名它。在 github 页面上,这个类被称为 CounterWorker
,你可以完全按照给定的方式复制它,尽管你可以使用你想要的任何延迟作业框架。从那时起,模型上的任何counter_cache_on
定义都将使用该类进行计数器更新。