【发布时间】:2021-09-30 21:18:15
【问题描述】:
我们有一个 Rails 6.1 应用程序并使用 Sidekiq 进行免费工作。有时会发生 sidekiq Web UI 重置为初始状态,显示已完成/失败的作业计数器接近零,表示最近 Redis 重置。这可能是什么原因造成的?
【问题讨论】:
标签: ruby-on-rails redis sidekiq
我们有一个 Rails 6.1 应用程序并使用 Sidekiq 进行免费工作。有时会发生 sidekiq Web UI 重置为初始状态,显示已完成/失败的作业计数器接近零,表示最近 Redis 重置。这可能是什么原因造成的?
【问题讨论】:
标签: ruby-on-rails redis sidekiq
这是由 Rails 使用相同的 Redis 作为缓存存储引起的,并且有人刚刚运行 Rails.cache.clear 进而调用 Redis 命令 FLUSHDB 清除整个数据库。
有两种可能的解决方案:
为 Rails 缓存和 Sidekiq 工作程序使用单独的 Redis 实例(IMO 在大多数情况下过度杀伤)
为 Rails.cache 和 Sidekiq 使用单独的 Redis DB。这仍然意味着您需要为 Rails.cache 和 Sidekiq 配置单独的 REDIS_URL 配置,但您可以使用不同的 Redis DB(默认情况下,redis 最多支持 16 个单独的 DB)。做这组
REIDS_URL_RAILS=redis://host:10000/0
REIDS_URL_SIDEKIQ=redis://host:10000/1
并相应地调整您的配置。 url末尾的数字是要使用的数据库的ID(默认使用DB=0)。
【讨论】: