local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.say("failed to connect: ", err)
return
end
local db, err = mysql:new()
--[[
-- 连接数据库代码省略
-- ]]
function create_udid()
local res, err = red:incrby("udid",1) --这里自增步长为1
if not res then
ngx.say("failed to get udid: ", err)
return
end
return res --这里返回 redis自增长id
end
client_uid = ngx.req.get_uri_args()["client_uid"] -- 获取客户端的client_uid
res, err, errcode, sqlstate = db:query("select sid from table where client_uid='"..client_uid.."'")
if not res then
ngx.say("bad result: ", err, ": ", errcode, ": ", sqlstate, ".")
return
end
if res==nil or res[1]['sid'] == nil then --如果查询数据库不存在
--服务端重新生成一个数字id
udid = create_udid()
--保存数据库,调用存储过程
ret = db:query("call proc_myfunc('"..udid.."','"..client_uid.."')")
--判断存储过程是返回1,还是返回0,0表示成功,1表示失败
if ret==0 then
ngx.say("{'sid':'"..udid.."'}")
else
ngx.exit(500)
end
else
--如何存在则只更新数据库
--此处代码省略
end
--[[
-- 设置redis,mysql set_keepalive 代码省略
-- ]]