我在我的应用程序中使用后台作业系统(Sidekiq)来管理一些不应阻止UI的繁重工作。
我希望在作业完成时将数据从后台作业传输到主线程,例如作业的状态或作业完成的数据。
此时我使用Redis作为主线程和后台作业之间的中间件。它存储后台作业的数据,状态,...,以便主线程可以读取它背后发生的事情。
我的问题是:在预定作业和主线程之间管理数据(使用Redis或键值缓存)这是一个很好的做法吗?还有其他手续吗?哪个最好,为什么?
答案 0 :(得分:3)
Redis pub/sub是您正在寻找的东西。 您只需在通道上使用subscribe命令订阅主线程,其中worker将使用publish命令宣告作业状态。 由于您已经在环境中使用了Redis,因此您无需启动其他任何操作。
答案 1 :(得分:1)
以下是我过去使用的其他两个选项:
我使用过memcached,它和Redis做同样的事情,here's如果你感兴趣的话,可以讨论比较它们的功能。我发现这很好用。
如果Redis为你工作,那么我会坚持下去。据我所知,这是解决这个问题的合理方法。唯一可能导致问题的是生成唯一键(可能不那么难),并确保清除未使用的缓存条目。