Sidekiq 4.0 contains a redesigned, more efficient core with less overhead per job. See my blog for an overview of Sidekiq 4's higher performance.
-
Sidekiq no longer uses Celluloid. If your application code uses Celluloid, you will need to pull it in yourself.
-
redis-namespace
has been removed from Sidekiq's gem dependencies. If you want to use namespacing (and I strongly urge you not to), you'll need to add the gem to your Gemfile:
gem 'redis-namespace'
-
Redis 2.8.0 or greater is required. Redis 2.8 was released two years ago and contains many useful features which Sidekiq couldn't leverage until now. Redis 3.0.3 or greater is recommended for large scale use #2431.
-
Jobs are now fetched from Redis in parallel, making Sidekiq more resilient to high network latency. This means that Sidekiq requires more Redis connections per process. You must have a minimum of
concurrency + 2
connections in your pool or Sidekiq will exit. When in doubt, let Sidekiq size the connection pool for you. -
Worker data is no longer updated in real-time but rather upon every heartbeat. Don't expect the
Sidekiq::Workers
API to be millisecond-precise. -
There's a new testing API based off the
Sidekiq::Queues
namespace. All assertions made against the Worker class still work as expected.
assert_equal 0, Sidekiq::Queues["default"].size
HardWorker.perform_async("log")
assert_equal 1, Sidekiq::Queues["default"].size
assert_equal "log", Sidekiq::Queues["default"].first['args'][0]
Sidekiq::Queues.clear_all
First, make sure you are using Redis 2.8 or greater. Next:
- Upgrade to the latest Sidekiq 3.x.
gem 'sidekiq', '< 4'
- Fix any deprecation warnings you see.
- Upgrade to 4.x.
gem 'sidekiq', '< 5'