Redis客户端Lettuce源码【四】Lettuce是如何断线重连的
上一篇主要介绍了RedisCommand在Lettuce中是如何流转的,以及Lettuce是如何通过单一连接处理多线程请求的。这一篇主要介绍一下Lettuce中是如何实现Redis断线重连的,在介绍之前先看一张图回忆一下RedisComman流转过程中牵扯到的几个类,以及类之间的关系。 如上图所示RedisCommand在Lettuce中经历了如下流程: RedisAsyncCommands调用StatefulRedisConnectionImpl的dispatch StatefulRedisConnectionImpl调用DefaultEndpoint的writeCommand 与Redis连接正常,autoFlush为true是,DefaultEndpoint会直接把Command通过Netty的channel发送出去 Netty收到RedisCommand之后,会在EventLoop中回调我们的初始化Bootstrap时配置的CommandHandler的write方法,在这个write方法中CommandHandler会把RedisCommand放入stack(双向队列)的尾部 把RedisCommand序列化之后发送给Redis Netty在收到Redis的response之后会在EventLoop中回调CommandHandler的channelRead方法