Redis基本およびResque基本
3268 ワード
Redis
redisはmemcachedのような高性能キー値キャッシュツールですが、より多くの値タイプをサポートし、機能が豊富で、ストレージコンテンツを定期的にディスクに永続化できます.NoSQLファミリーの優れた一員です.
インストール
クライアント
デバッグ
クライアント実行後、コマンドを入力
注意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バージョン
redis-rb
redisは多言語実装のクライアントアクセスをサポートし、redis-rbはredisのクライアントの1つであり、ruby言語に基づいて実装される.redis-rbのメソッド名とredisの一致
Resque
resqueはredisベースのバックグラウンドタスクコンポーネントであり、任意のクラスやモジュールをタスクとしてバックグラウンドで実行でき、フロント管理機能を備えており、実行状況の表示が容易である.
使用
1.タスクの作成
2.タスクキューに入る
3.タスクの実行
rails 3との統合
0.redis新規
1.resqueのロード
2.workerクラスはapp/jobsに配置されているため、railsを指定してこのディレクトリ変更
config.autoload_paths += %W(#{config.root}/app/jobs)
3.rakeタスク修正@RakeFile@に参加し、以下の内容を加える
require ‘resque/tasks’task “resque:setup” => :environment
2番目の文は、
resqueバックグラウンドタスクの実行
タスクの実行状況の表示
ブラウザを開き、http://0.0.0.0:8282フロントにアクセスして失敗したworkerとそのログを表示し、retry操作を手動で実行できます.
タイミングタスク
タスクを定期的に実行するには、resque-schedulerを使用します.
テスト
テスト時にテストプロセスがresqueと非同期である必要はありません.そうしないと、resqueが実行されたときにデータが空になった可能性があります.resque_を使用します.specプラグインはresque workerを直ちに実行できます
詳細はhttps://github.com/leshill/resque_spec
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