hi,all:
redis:set_keepalive(10000, 100) 长连接
有两个问题:
1. 第一次new一个redis对象 然后connect之后,然后放到连接池(set_keepalive)
第二次从连接池去取的操作(从代码层面来看),是不是还是先new一个对象,然后connect这样写,只不过这次两个函数的
内部实现效果封装了从连接池取的操作,如下:
*****第一次连接操作******
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000) -- 1 sec
ok, err = red:set("dog", "an animal")
redis:set_keepalive(10000, 100)
*****第二次连接操作******
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000) -- 1 sec -- 这地方还是需要new和connect函数,但是其实效果是从连接池复用了上一个连接,对嘛?
ok, err = red:set("dog", "an animal")
redis:set_keepalive(10000, 100) -- 这个地方是不是还需要setkeepalive一次?
2. redis:set_keepalive初始化了连接池大小为100
如果连接数大于100,按文档上说,会按照LRU回收idle的连接,但是如果100都不是idle
,那么会是啥结果,阻塞等待有idle出现,还是有啥机制?