redis pipeline

redis pipeline
This commit is contained in:
xiefan
2015-11-12 20:45:19 +08:00
parent 375f8606b4
commit 471aecd708
2 changed files with 59 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ local socketchannel = require "socketchannel"
local table = table
local string = string
local assert = assert
local redis = {}
local command = {}
@@ -161,6 +162,27 @@ function command:sismember(key, value)
return fd:request(compose_message ("SISMEMBER", {key, value}), read_boolean)
end
function command:pipeline(ops)
assert(#ops > 0, "pipeline is null")
local fd = self[1]
local cmds = {}
for _, cmd in ipairs(ops) do
assert(#cmd >= 2, "pipeline error, the params length is less than 2")
table.insert(cmds, compose_message(string.upper(cmd[1]), {cmd[2], cmd[3], cmd[4]}))
end
return fd:request(table.concat(cmds, "\r\n"), function (fd)
local result = {}
for i=1, #ops do
local ok, out = read_response(fd)
table.insert(result, {ok = ok, out = out})
end
return true, result
end)
end
--- watch mode
local watch = {}