我正在使用 redis 和 ruby 并尝试在线程内发出 blpop
,以便我可以等待列表上的传入项目。
问题是 blpop
block 中的代码似乎从未被调用。这是我正在运行的示例代码(ruby 1.9.3):
require 'rubygems'
require 'redis'
def start_thread
@thread = Thread.new do
r = Redis.new
r.blpop("test", 0) do |key, message|
process_message(key, message)
end
end
redis = Redis.new
redis.rpush "test", "hello world"
end
def process_message(key, message)
@message = "#{key} was sent #{message}"
end
start_thread
@thread.join
p @message
非常感谢任何帮助!
最佳答案
require 'rubygems'
require 'redis'
def start_thread
@thread = Thread.new do
r = Redis.new
key, message = r.blpop(:test, 0)
process_message(key, message)
end
redis = Redis.new
redis.rpush :test, "hello world"
end
def process_message(key, message)
@message = "#{key} was sent #{message}"
end
start_thread
@thread.join
p @message
关于Ruby 和 Redis,线程不处理命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651095/