个人的一点脑洞,发出来跟大家一起讨论下 :)
ngx.ctx 里面存储的是 per-request 的数据,如果我没记错的,它是通过在 C 层面上存储 lua 数据实现的。 它的用途,主要在于实现 per-request 的数据存储,比如在不同的 context 里共享数据。
如果我们在 lrucache 里面以每个 request 特定的 id 作为键(比如 自己生成 uuid,或者用 1.11 版本的 ngx.var.request_id 变量),那么是否可以实现跟 ngx.ctx 一样的功能呢?而且还能避免昂贵的转换操作。当然不要忘记给这个键设置合理的过期时间。
这种实现是否可行?其中会不会有坑?在此抛砖引玉,恭候诸位的高见。