71 lines
1.2 KiB
Lua
71 lines
1.2 KiB
Lua
local skynet = require "skynet"
|
|
local redis = require "skynet.db.redis"
|
|
|
|
local conf = {
|
|
host = "127.0.0.1",
|
|
port = 6379,
|
|
db = 0
|
|
}
|
|
|
|
local function read_table(t)
|
|
local result = { }
|
|
for i = 1, #t, 2 do result[t[i]] = t[i + 1] end
|
|
return result
|
|
end
|
|
|
|
skynet.start(function()
|
|
local db = redis.connect(conf)
|
|
|
|
db.pipelining = function (self, block)
|
|
local ops = {}
|
|
|
|
block(setmetatable({}, {
|
|
__index = function (_, name)
|
|
return function (_, ...)
|
|
table.insert(ops, {name, ...})
|
|
end
|
|
end
|
|
}))
|
|
|
|
return self:pipeline(ops)
|
|
end
|
|
|
|
do
|
|
print("test function")
|
|
local ret = db:pipelining(function (red)
|
|
red:multi()
|
|
red:hincrby("hello", 1, 1)
|
|
red:del("hello")
|
|
red:hmset("hello", 1, 1, 2, 2, 3, 3)
|
|
red:hgetall("hello")
|
|
red:exec()
|
|
end)
|
|
-- ret is the result of red:exec()
|
|
for k, v in pairs(read_table(ret[4])) do
|
|
print(k, v)
|
|
end
|
|
end
|
|
|
|
do
|
|
print("test table")
|
|
local ret = db:pipeline({
|
|
{"hincrby", "hello", 1, 1},
|
|
{"del", "hello"},
|
|
{"hmset", "hello", 1, 1, 2, 2, 3, 3},
|
|
{"hgetall", "hello"},
|
|
}, {}) -- offer a {} for result
|
|
|
|
print(ret[1].out)
|
|
print(ret[2].out)
|
|
print(ret[3].out)
|
|
|
|
for k, v in pairs(read_table(ret[4].out)) do
|
|
print(k, v)
|
|
end
|
|
end
|
|
|
|
db:disconnect()
|
|
skynet.exit()
|
|
end)
|
|
|