Redis基本およびResque基本

3268 ワード

Redis
redisはmemcachedのような高性能キー値キャッシュツールですが、より多くの値タイプをサポートし、機能が豊富で、ストレージコンテンツを定期的にディスクに永続化できます.NoSQLファミリーの優れた一員です.
インストール
wget https://github.com/antirez/redis/tarball/2.2.0-rc2

tar -xzvf antirez-redis-2.2.0-rc2-0-g0540df2.tar.gz

cd antirez-redis-b703b5d

make

sudo make install

クライアント
redis-cli

デバッグ
クライアント実行後、コマンドを入力
monitor

注意expire
redisのexpireコマンドには制限があります.このコマンドを実行すると、keyに対する操作はすべて先にkeyをクリアします.詳細はhttp://redis.io/topics/expire 2.1.3以上のバージョンではこの制限はありませんが、安定版は正式にリリースされていません.2.1正式にリリースされると2.2バージョンに変更されます.
具体的には以下の通りである.
redis>set a 100 OKredis>expire a 600(integer)1 redis>incr a(integer)1 redis>get a「1」#正常には、keyが期限切れではないため101に戻る必要があります.
この制限に敏感であれば、2.2.0 rc 2バージョン makeを試してからmake testを実行したほうがいいです.私は試したことがあります.確かに上記の奇妙な表現はありません.
redis-rb
redisは多言語実装のクライアントアクセスをサポートし、redis-rbはredisのクライアントの1つであり、ruby言語に基づいて実装される.redis-rbのメソッド名とredisの一致
Resque
resqueはredisベースのバックグラウンドタスクコンポーネントであり、任意のクラスやモジュールをタスクとしてバックグラウンドで実行でき、フロント管理機能を備えており、実行状況の表示が容易である.
使用
1.タスクの作成
class WorkerClass

  @queue = "demo"

  def self.perform(args)

    sleep 3 

    puts "Doing something complex with  #{args}"

  end

end

2.タスクキューに入る
require "resque"

Resque.enqueue(WorkerClass, args)

3.タスクの実行
rails 3との統合
0.redis新規config/redis.ymlファイルを構成し、以下の内容を加える
defaults: &defaults

  host: localhost

  port: 6379



development:

  <<: *defaults



test:

  <<: *defaults



staging:

  <<: *defaults



production:

  <<: *defaults


1.resqueのロード
echo "require 'resque'" > config/initializers/load_resque.rb

config = YAML::load(File.open("#{Rails.root}/config/redis.yml"))[Rails.env]

Resque.redis = Redis.new(:host => config['host'], :port => config['port'])

2.workerクラスはapp/jobsに配置されているため、railsを指定してこのディレクトリ変更config/application.rbをロードし、以下の内容を追加する必要があります.
config.autoload_paths += %W(#{config.root}/app/jobs)
3.rakeタスク修正@RakeFile@に参加し、以下の内容を加える
require ‘resque/tasks’task “resque:setup” => :environment
2番目の文は、resque:setupを実行する前にrails環境を初期化することを示す.
resqueバックグラウンドタスクの実行
QUEUE=* rake resque:work

タスクの実行状況の表示
#  resque       

resque-web -p 8282

ブラウザを開き、http://0.0.0.0:8282フロントにアクセスして失敗したworkerとそのログを表示し、retry操作を手動で実行できます.
タイミングタスク
タスクを定期的に実行するには、resque-schedulerを使用します.
テスト
テスト時にテストプロセスがresqueと非同期である必要はありません.そうしないと、resqueが実行されたときにデータが空になった可能性があります.resque_を使用します.specプラグインはresque workerを直ちに実行できます
詳細はhttps://github.com/leshill/resque_spec