我有一个应用程序可以提供许多复杂的JSON部分。其中一些可能会打到数据库1000次。我将结果预先缓存在我们的数据库中,这样当我们更改基础数据时,我们重新生成JSON frag,然后将其存储在DB中。我正在使用Sidekiq来管理它。一个问题是,如果我将此缓存查杀代码放入Rails模型回调中,我可能会立即获得工作人员请求的多个副本。这显然不是我想要的。 Sidekiq有没有办法说只有当它不在队列中时才将它添加到队列中?
以下是我正在做的事情的一个例子:
class ArcBackground
include Sidekiq::Worker
def perform(id)
Menu.regenerateMenuJSON(id)
Menu.regenerateMenuJSONFull(id)
end
end