Hello!
On Tue, Dec 25, 2012 at 9:59 PM, 祝 海林 wrote:
> 你好 我在nginx 中使用 lua-redis 给token 设置了过期时间。但是发现 token不定期 TTL变成-1 也就是永远不会过时。
> 按理说使用了
> multi 应该是在同一事务中,不知道为啥会产生这个问题。
>
>
> 代码如下(或者查看 https://gist.github.com/ac44fcf7ef0836c5b8e1)
>
> local redis = require "resty.redis"
> local redMaster = redis:new()
> redMaster:set_timeout(1000)
> local ok,error = redMaster:connect((hosts["RedisMaster"] or "127.0.0.1"),
> 6379)
> ok, error = redMaster:multi()
> if not ok then
> ngx.log(ngx.ERR,"failed to run multi: ", err)
> return false
> end
> redMaster:set(token,1)
> redMaster:expire(token,60)
> redMaster:exec()
>
建议给你所有的 redis 操作都加上完整的错误处理。
由于 Redis 事务如果在中间出错并不会自动回滚(这是 Redis 服务器的设计行为),所以你总是需要检查各条 Redis 命令,特别是
exec 命令的返回值。
同时抄送给 openresty 中文邮件列表:https://groups.google.com/group/openresty
建议你加入此列表并在那里提问。因为那里会有更多的人可以提供帮助。
Best regards,
-agentzh