redis简单示例及注意事项
下面小示例是在测试取redis数据,其中使用了连接池和复用长连接操作;
local function get(key) local red = redis.new() red:set_timeout(1000) local ok, err = red:connect("127.0.0.1", 6379) if not ok then ngx.say("get:failed to connect:", err) return end red:select(0) --这里必须强制选择db,否则连接池中的长连接有些是指向其他db的,这是如果复用会导致库指错 ok, err = red:get(key) nlog.dinfo("ok:" .. cjson.encode(ok)) if not ok then ngx.say("get:failed to get:", err) red:close() return end red:close() return --[[ok, err = red:set_keepalive(60000, 100) if not ok then ngx.say("get:failed to get:", err) red:close() return end]] end redis_util.get = get
这里注意red:select()操作,再配合使用连接池的时候,必须指定db,因为连接池中部分长连接是设定了定向db,如果程序中不加指定的话,会出现诡异现象取不到数据;