local cmd = tostring(ngx.var.arg_cmd)
local key = tostring(ngx.var.arg_key)
local val = tostring(ngx.var.arg_val)
local flags = tostring(ngx.var.arg_flags or 0)
local exptime = tostring(ngx.var.arg_exptime or 0)
local commands = {
set="set",
get="get",
gets="gets",
add="add",
delete="delete",
flush_all="flush_all",
incr="incr",
decr="decr",
replace="replace",
append="append",
prepend="prepend",
stats="stats",
version="version"
}
cmd = commands[cmd]
if not cmd then ngx.exit(400) end
local memcached = require("resty.memcached")
local memc,err = memcached:new()
if not memc then
ngx.say("failed to instantiate memc: ",err)
return
end
memc:set_timeout(1000)
local ok,err = memc:connect("127.0.0.1",11211)
if not ok then
ngx.say("failed to connect: ",err)
return
end
if cmd == "get" then
if not key then ngx.exit(400) end
local res,flags,err = memc:get(key)
if err then
ngx.say("failed to get ",key," : ",err)
return
end
if not res then
ngx.exit(404)
end
ngx.say(res)
end
if cmd == "set" then
if not (key and val) then ngx.exit(400) end
local ok,err = memc:set(key,val,exptime,flags)
if not ok then
ngx.say("failed to set ",key," : ",err)
return
end
ngx.say("STORED")
end