hi:
很荣幸在这里发帖、而且也感谢章老师开发了如此简约高效的openresty
现在我们公司的项目要整体切换到openresty上面来,但是在迁移改写的过程中、发现有一个困扰、因为项目比较急、搜了互联网的很多地方、发现不是没有人提及这个问题、就是答案互不一样。
openresty默认的是luajit、当我打开lua_code_code on的时候、在memcached模块里这样写
local memc = require "resty.memcached"
local memc = memc:new()
的时候、会出现错误、具体错误是bad request、网上说这样模块缓存、引起的实例竞争。
但是我们项目一起客户端请求做相应的逻辑判断要get.set memcached很多次,每次都要new一下、我觉得是不是不太对、消耗太大。
网上也有说用 ngx.ctx存储实例的、最后我们也是这样做的。但是依旧不能保证这个思路的正确性。如下
if ngx.ctx.memcached then
return ngx.ctx.memcached
end
-- 如果没有再new
这样确实可以保证一次客户端请求只有一个实例。但是思路依旧不清楚、归根结底是自己对源码不熟悉、能力有限。因此在这里问一下,具体创建实例的时候怎么创建才好