SidekiqとRedisを知るために、情報をまとめた記事です。
sidekiqとは
sidekiqとは、非同期処理を行いたい時に使うライブラリである。
Railsが必須というわけではないようですが、基本的にはRailsで使います。
sidekiqの使い方
1.まず、sidekiqを追加します。
gem 'sidekiq'
2.app/workersにワーカーファイルを作成します。
rails g sidekiq:worker Hard #このコマンドがapp/workers/hard_worker.rbファイルを作成します
class HardWorker
include Sidekiq::Worker
def perfome(name, count)
# do something
end
end
3.非同期処理が行われるように、ジョブを作成します
HardWorker.perform_async('bob', 5)
"perform"はインスタンスメソッドです。
他にも下記のようなインスタンスメソッドがあります。
HardWorker.perfome_in(5.minutes, 'bob', 5)
HardWorker.perfome_at(5.minutes.from_now, 'bob', 5)
メモ:もしsidekiqと使うときにrails consoleで使う場合は、springを止める事で新しいワーカーを使う事ができます。ワーカーの初期化かな?
4.sidekiqを動かすには下記コマンドを打ちましょう
bundle exec sidekiq
sidekiqにはpro版とかがある
Pro版とEnterprise版とで機能などが変わってくるそうです。
https://sidekiq.org/
Redisとは
Key-Valueストアデータベースです。
オープンソースのインメモリ型です。
データ保存方法の特徴
コンピュータの記憶領域として、
- CPUから直接アクセスできるメインメモリ
- ハードディスクなどのディスクストレージ
の2つがあります。
インメモリ・データベースとは、メインメモリ上だけでデータを管理する仕組みです。
メモリは「揮発性」という性質により、コンピューターが停止すると、メモリに載っている情報も全て消えてしまいます。しかしRedisではデータ永続化機能のオプションがあり、メインメモリ上のデータをディスクストレージに記憶させる事ができます。
Redisで保存できるデータ
Redisでは
- リスト型
- セット型
- ハッシュ型
のデータも扱う事ができます。
Redisの用途
キャッシュ
- DBクエリ結果のキャッシュ
- 永続的なセッションのキャッシュ
- Webページのキャッシュ
- 画像
- ファイル
- メタデータ
チャット
リアルタイムでのコメントストリーム
ソーシャルメディアフィード
ゲームのリーダーボード
リアルタイムでのランキングリストを作成する
セッションストア
セッション状態のなどを管理する時
リッチメディアストリーミング
(とにかく認証系を素早く大量に処理できる、という事でしょうか・・・)
地理空間
(地理空間データを簡単・高速に処理する事ができるそうです。位置情報などをリアルタイムに更新する際などには良さそうですね。)
Machine Learning
作成されたデータに対して、並行して機械学習・データ処理を行う訳ですが、その処理を行う際に、迅速に処理する事ができるという点ではRedisは有用なようです。
リアルタイム分析
断続的に更新されるデータを素早く処理するという意味で、Redisは有用そうです。
こうして見ると、Redisは、メモリの特徴を踏まえればわかるように、リアルタイム処理などに有効に働くようです。
競合ライブラリ
MemcachedもインメモリのOSSデータストアです。
参照
[https://github.com/mperham/sidekiq/wiki/Getting-Started]
(https://github.com/mperham/sidekiq/wiki/Getting-Started)
https://aws.amazon.com/jp/redis/