mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
53 lines
2 KiB
Markdown
53 lines
2 KiB
Markdown
# Welcome to Sidekiq 4.0!
|
|
|
|
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](http://www.mikeperham.com/2015/10/14/optimizing-sidekiq/).
|
|
|
|
## What's New
|
|
|
|
* 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](http://www.mikeperham.com/2015/09/24/storing-data-with-redis/)), you'll need to add the gem to your Gemfile:
|
|
```ruby
|
|
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](https://github.com/mperham/sidekiq/issues/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.
|
|
```ruby
|
|
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
|
|
```
|
|
|
|
## Upgrade
|
|
|
|
First, make sure you are using Redis 2.8 or greater. Next:
|
|
|
|
* Upgrade to the latest Sidekiq 3.x.
|
|
```ruby
|
|
gem 'sidekiq', '< 4'
|
|
```
|
|
* Fix any deprecation warnings you see.
|
|
* Upgrade to 4.x.
|
|
```ruby
|
|
gem 'sidekiq', '< 5'
|
|
```
|