HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com
发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com --
调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com --
发件人: Zexuan Luo发送时间: 2017-08-01 17:46收件人: openresty主题: Re: [openresty] Re: flush_all删除三条记录的疑问在调用 ngx_http_lua_shdict_expire 之前不是把所有键都设置成过期了么?怎么会出现“前几条并不是被置为过期”的情况? 在 2017年8月1日星期二 UTC+8下午4:06:19,hanfen...@gmail.com写道: 调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com -- --
是啊,我也一直这么认为的,可实测结果确实前三条被删除了,而且代码里也是这么写的。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:46收件人: openresty主题: Re: [openresty] Re: flush_all删除三条记录的疑问在调用 ngx_http_lua_shdict_expire 之前不是把所有键都设置成过期了么?怎么会出现“前几条并不是被置为过期”的情况? 在 2017年8月1日星期二 UTC+8下午4:06:19,hanfen...@gmail.com写道: 调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com -- --
发件人: Zexuan Luo发送时间: 2017-08-01 17:58收件人: openresty主题: Re: Re: [openresty] Re: flush_all删除三条记录的疑问你的意思是,预期的结果是所有键都被设置成过期,且没有键被删除?这个预期结果跟 flush_all 这个接口的名字 不太符合吧?在 2017年8月1日星期二 UTC+8下午5:49:47,hanfen...@gmail.com写道: 是啊,我也一直这么认为的,可实测结果确实前三条被删除了,而且代码里也是这么写的。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:46收件人: openresty主题: Re: [openresty] Re: flush_all删除三条记录的疑问在调用 ngx_http_lua_shdict_expire 之前不是把所有键都设置成过期了么?怎么会出现“前几条并不是被置为过期”的情况? 在 2017年8月1日星期二 UTC+8下午4:06:19,hanfen...@gmail.com写道: 调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com -- -- --
wiki对这个借口的解释就是 “标记所有存在的内容为已过期”,并没有说删除。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:58收件人: openresty主题: Re: Re: [openresty] Re: flush_all删除三条记录的疑问你的意思是,预期的结果是所有键都被设置成过期,且没有键被删除?这个预期结果跟 flush_all 这个接口的名字 不太符合吧?在 2017年8月1日星期二 UTC+8下午5:49:47,hanfen...@gmail.com写道: 是啊,我也一直这么认为的,可实测结果确实前三条被删除了,而且代码里也是这么写的。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:46收件人: openresty主题: Re: [openresty] Re: flush_all删除三条记录的疑问在调用 ngx_http_lua_shdict_expire 之前不是把所有键都设置成过期了么?怎么会出现“前几条并不是被置为过期”的情况? 在 2017年8月1日星期二 UTC+8下午4:06:19,hanfen...@gmail.com写道: 调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com -- -- --
发件人: Zexuan Luo发送时间: 2017-08-01 18:13收件人: openresty主题: Re: Re: [openresty] Re: flush_all删除三条记录的疑问我猜是中文翻译的锅。原文是,This method does not actuall free up all the memory blocks in the dictionary but just marks all the existing items as expired.这里的中文翻译没有把 “all the memory blocks” 的意思翻译出来。翻译出来的是 “the memory blocks”,把 all 给吞了。在 2017年8月1日星期二 UTC+8下午6:03:51,hanfen...@gmail.com写道: wiki对这个借口的解释就是 “标记所有存在的内容为已过期”,并没有说删除。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:58收件人: openresty主题: Re: Re: [openresty] Re: flush_all删除三条记录的疑问你的意思是,预期的结果是所有键都被设置成过期,且没有键被删除?这个预期结果跟 flush_all 这个接口的名字 不太符合吧?在 2017年8月1日星期二 UTC+8下午5:49:47,hanfen...@gmail.com写道: 是啊,我也一直这么认为的,可实测结果确实前三条被删除了,而且代码里也是这么写的。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:46收件人: openresty主题: Re: [openresty] Re: flush_all删除三条记录的疑问在调用 ngx_http_lua_shdict_expire 之前不是把所有键都设置成过期了么?怎么会出现“前几条并不是被置为过期”的情况? 在 2017年8月1日星期二 UTC+8下午4:06:19,hanfen...@gmail.com写道: 调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com -- -- -- --
我猜是中文翻译的锅。原文是,This method does not actuall free up all the memory blocks in the dictionary but just marks all the existing items as expired.这里的中文翻译没有把 “all the memory blocks” 的意思翻译出来。翻译出来的是 “the memory blocks”,把 all 给吞了。在 2017年8月1日星期二 UTC+8下午6:03:51,hanfen...@gmail.com写道: wiki对这个借口的解释就是 “标记所有存在的内容为已过期”,并没有说删除。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:58收件人: openresty主题: Re: Re: [openresty] Re: flush_all删除三条记录的疑问你的意思是,预期的结果是所有键都被设置成过期,且没有键被删除?这个预期结果跟 flush_all 这个接口的名字 不太符合吧?在 2017年8月1日星期二 UTC+8下午5:49:47,hanfen...@gmail.com写道: 是啊,我也一直这么认为的,可实测结果确实前三条被删除了,而且代码里也是这么写的。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:46收件人: openresty主题: Re: [openresty] Re: flush_all删除三条记录的疑问在调用 ngx_http_lua_shdict_expire 之前不是把所有键都设置成过期了么?怎么会出现“前几条并不是被置为过期”的情况? 在 2017年8月1日星期二 UTC+8下午4:06:19,hanfen...@gmail.com写道: 调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com -- -- --
看了英文的解释,确实如此;那就是中文的wiki有歧义,谢谢啦! hanfe...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 18:13收件人: openresty主题: Re: Re: [openresty] Re: flush_all删除三条记录的疑问我猜是中文翻译的锅。原文是,This method does not actuall free up all the memory blocks in the dictionary but just marks all the existing items as expired.这里的中文翻译没有把 “all the memory blocks” 的意思翻译出来。翻译出来的是 “the memory blocks”,把 all 给吞了。在 2017年8月1日星期二 UTC+8下午6:03:51,hanfen...@gmail.com写道: wiki对这个借口的解释就是 “标记所有存在的内容为已过期”,并没有说删除。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:58收件人: openresty主题: Re: Re: [openresty] Re: flush_all删除三条记录的疑问你的意思是,预期的结果是所有键都被设置成过期,且没有键被删除?这个预期结果跟 flush_all 这个接口的名字 不太符合吧?在 2017年8月1日星期二 UTC+8下午5:49:47,hanfen...@gmail.com写道: 是啊,我也一直这么认为的,可实测结果确实前三条被删除了,而且代码里也是这么写的。 hanfen...@gmail.com 发件人: Zexuan Luo发送时间: 2017-08-01 17:46收件人: openresty主题: Re: [openresty] Re: flush_all删除三条记录的疑问在调用 ngx_http_lua_shdict_expire 之前不是把所有键都设置成过期了么?怎么会出现“前几条并不是被置为过期”的情况? 在 2017年8月1日星期二 UTC+8下午4:06:19,hanfen...@gmail.com写道: 调用这个方法的时候,前几条并不是被置为过期,而是直接被删除了;但我并不想删除,只是想置为过期而已。 hanfen...@gmail.com 发件人: tokers发送时间: 2017-08-01 09:43收件人: openresty主题: [openresty] Re: flush_all删除三条记录的疑问在强制过期掉所有的 key 之后,即使这里不调用 ngx_http_lua_shdict_expire,后续你调用一些诸如 get、set 的操作,还是会去过期一些 key 的,既然如此,为什么不在这里先过期一些呢On Monday, July 31, 2017 at 8:36:14 PM UTC+8, hanfen...@gmail.com wrote: HI, 在使用共享内存的接口flush_all发现,调用flush_all()后,共享内存中的前三条记录及被删除了,而不是被置为过期; 查看代码发现,ngx_http_lua_shdict_flush_all函数中调用了ngx_http_lua_shdict_expire,第二个参数为0; ngx_http_lua_shdict_expire函数中也确实会删除三条记录,我想问下,为什么有这样的逻辑?ngx_http_lua_shdict_expire函数: hanfen...@gmail.com -- -- -- -- --