由于业务需要,需要将同一个user 写mysql的请求串行化,也就是一个http请求我要执行3~5个sql语句, 同一用户如果同时发起两个请求,我要保证前一个请求的3~5个sql执行完了,才能让后一个请求开始执行sql操作,不知道这个如何在ngxlua里面实现。 --
你直接把这几个sql放到存储过程里面,由数据库来保证这个串行化,不是更好么? jie123108 发件人: smallfish 发送时间: 2014-04-23 10:41 收件人: open...@googlegroups.com 主题: Re: [openresty] 请教:ngxlua 如何串行化 mysql写操作 自己加锁吧。看看章老师的模块:https://github.com/agentzh/lua-resty-lock 看看是否有帮助 -- smallfish http://chenxiaoyu.org 2014-04-23 9:27 GMT+08:00 lua初学者 <stone...@gmail.com>: 由于业务需要,需要将同一个user 写mysql的请求串行化,也就是一个http请求我要执行3~5个sql语句, 同一用户如果同时发起两个请求,我要保证前一个请求的3~5个sql执行完了,才能让后一个请求开始执行sql操作,不知道这个如何在ngxlua里面实现。 -- --
自己加锁吧。看看章老师的模块:https://github.com/agentzh/lua-resty-lock 看看是否有帮助--smallfish http://chenxiaoyu.org 2014-04-23 9:27 GMT+08:00 lua初学者 <stone...@gmail.com>: 由于业务需要,需要将同一个user 写mysql的请求串行化,也就是一个http请求我要执行3~5个sql语句, 同一用户如果同时发起两个请求,我要保证前一个请求的3~5个sql执行完了,才能让后一个请求开始执行sql操作,不知道这个如何在ngxlua里面实现。 --
这个锁我有一个担心就是unlock问题,如果当前lua 出错。没有正确调用unlock,就得挂住,能不能有什么方法,在location生命周期结束后自动unlock,防止异常情况在 2014年4月23日星期三UTC+8上午10时41分25秒,smallfish写道: 自己加锁吧。看看章老师的模块:https://github.com/agentzh/lua-resty-lock 看看是否有帮助 --smallfish http://chenxiaoyu.org 2014-04-23 9:27 GMT+08:00 lua初学者 <stone...@gmail.com>: 由于业务需要,需要将同一个user 写mysql的请求串行化,也就是一个http请求我要执行3~5个sql语句, 同一用户如果同时发起两个请求,我要保证前一个请求的3~5个sql执行完了,才能让后一个请求开始执行sql操作,不知道这个如何在ngxlua里面实现。 -- --
自己加锁吧。看看章老师的模块:https://github.com/agentzh/lua-resty-lock 看看是否有帮助 --smallfish http://chenxiaoyu.org 2014-04-23 9:27 GMT+08:00 lua初学者 <stone...@gmail.com>: 由于业务需要,需要将同一个user 写mysql的请求串行化,也就是一个http请求我要执行3~5个sql语句, 同一用户如果同时发起两个请求,我要保证前一个请求的3~5个sql执行完了,才能让后一个请求开始执行sql操作,不知道这个如何在ngxlua里面实现。 --
Hello! 2014-04-22 19:56 GMT-07:00 lua初学者: > 这个锁我有一个担心就是unlock问题,如果当前lua > 出错。没有正确调用unlock,就得挂住,能不能有什么方法,在location生命周期结束后自动unlock,防止异常情况 lua-resty-lock 库中的锁对象在被 GC 回收时会自动释放其所持有的锁(如果你没有正确调用 unlock 的话)。建议仔细阅读该库的官方文档: https://github.com/agentzh/lua-resty-lock#readme Regards, -agentzh
Hello! 2014-04-22 22:02 GMT-07:00 Yichun Zhang (agentzh): > lua-resty-lock 库中的锁对象在被 GC 回收时会自动释放其所持有的锁(如果你没有正确调用 unlock 的话)。建议仔细阅读该库的官方文档: > > https://github.com/agentzh/lua-resty-lock#readme > 另外锁本身也可以设置过期时间(exptime),这在文档中也有明确说明。所以即使锁对象未被 GC 回收,其持有的锁达到过期时间时也会自动失效。 Regards, -agentzh