设置计数器缓存比例

Setting up counter cache scale

我的计数器缓存在重负载下锁定行,所以我发现 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

知道发生了什么事吗?我应该在 Worker Adapter 中放入什么?似乎没有任何效果。 谢谢你的时间

default_worker_adapter 是将处理您的更新的 class 的名称。 gem 的 github 页面给出了一个示例。例如,如果您使用的是 sidekiq,则可以将 sidekiq worker class 命名为任何您想要的名称。在 github 页面上,这个 class 被称为 CounterWorker 并且您可以完全按照给定的方式复制它,尽管您可以使用任何您想要的延迟作业框架。从那时起,您模型上的任何 counter_cache_on 定义都将使用该 class 进行计数器更新。