Jedis将QUIT请求发送到内部Redis服务器

时间:2019-09-24 08:42:42

标签: kotlin redis jedis

我的Jedis客户端在内部发送quit请求,导致Redis服务器关闭连接。 这是意外行为。 下面是我的主机的tcpdump。

QUIT

17:12:17.702322 IP SOURCE_HOST.29039 > DEST_HOST.34250: Flags [P.], seq 1290557:1290562, ack 833190, win 65160, options [nop,nop,TS val 346069381 ecr 351399090], length 5
E..98\@.;...
%V.
W..qo....
.P.l.....U......
........+OK

17:12:17.702345 IP DEST_HOST.34250 > SOURCE_HOST.29039: Flags [.], ack 1290562, win 65366, options [nop,nop,TS val 351399092 ecr 346069381], length 0
E..4..@.@..l

我正在执行以下操作。
1. get()
2. set()
3. setex()
4. ping()
5. del()
6. keys()

我在Kotlin上使用Jedis:2.9.3。
操作:从JedisPool获取资源(连接)并发送请求(例如get())。
有人知道Jedis为什么不显式调用发送QUIT请求吗?

1 个答案:

答案 0 :(得分:0)

  1. JedisPool使用JedisFactory。
  2. JedisFactory中的
  3. destroyObject会调用quit
  4. JedisFactory的
  5. destroyObject实际上会覆盖PooledObjectFactory的destroyObject
  6. GenericObjectPool使用PooledObjectFactory。
  7. GenericObjectPool中的
  8. destroy调用PooledObjectFactory的destroyObject
    • (JedisFactory的destroyObject也是如此)会导致调用quit

在许多情况下,会调用GenericObjectPool的destroy