class Async::Redis::Context::Pipeline

Send multiple commands without waiting for the response, instead of sending them one by one.

Public Class Methods

new(pool) click to toggle source
Calls superclass method Async::Redis::Context::Generic::new
# File lib/async/redis/context/pipeline.rb, line 50
def initialize(pool)
        super(pool)
        
        @count = 0
        @sync = nil
end

Public Instance Methods

call(command, *arguments) click to toggle source

This method just accumulates the commands and their params.

# File lib/async/redis/context/pipeline.rb, line 77
def call(command, *arguments)
        write_request(command, *arguments)
        
        return nil
end
close() click to toggle source
Calls superclass method Async::Redis::Context::Generic#close
# File lib/async/redis/context/pipeline.rb, line 98
def close
        flush
        
        super
end
collect() { || ... } click to toggle source
# File lib/async/redis/context/pipeline.rb, line 92
def collect
        yield
        
        @count.times.map{read_response}
end
flush(count = 0) click to toggle source

Flush responses. @param count [Integer] leave this many responses.

# File lib/async/redis/context/pipeline.rb, line 59
def flush(count = 0)
        while @count > count
                read_response
        end
end
read_response() click to toggle source
# File lib/async/redis/context/pipeline.rb, line 83
def read_response
        if @count > 0
                @count -= 1
                super
        else
                raise RuntimeError, "No more responses available!"
        end
end
sync() click to toggle source
# File lib/async/redis/context/pipeline.rb, line 65
def sync
        @sync ||= Sync.new(self)
end
write_request(*) click to toggle source

This method just accumulates the commands and their params.

# File lib/async/redis/context/pipeline.rb, line 70
def write_request(*)
        super
        
        @count += 1
end