假设我在特定用户请求期间执行特别昂贵的计算。好的一面是,这个计算可以提前执行,并推送到一般队列中供人们使用。
有没有办法在Ruby / Rails后端使用Sidekiq
来保持结果缓存满一定程度?我在哪里存储这个计算的结果?
e.g。
显然可能需要使用不同于20的数字,具体取决于计算所需的时间和用户请求的速率,但我认为你明白这一点。
答案 0 :(得分:0)
我很想知道什么样的计算实际适合这个配置文件,但这并不重要。
由于您使用的是Sidekiq(或想使用Sidekiq),这意味着您拥有Redis数据库。 Redis数据库是放置此类信息的好地方。
因此,您可以在Redis中创建结果的LIST。在应用程序启动期间激活20个sidekiq作业以创建计算。进行计算的工作人员可以将结果推送到Redis中的列表中。
在处理请求时,只需从列表中弹出结果并排队另一个sidekiq作业,以便自己进行新的计算。