redis集群三种方式 redis线程池作用


Redis 6引入多线程IO,下面我们来和 Netty 的多线程模型进行对比 分析思路:初始化线程?如何分配client给thread?如何处理读写事件,在什么线程处理?如何处理命令的逻辑,在什么线程处理?Netty的多线程模型用户代码 ServerBootstrap b = new ServerBootstrap();b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childOption(ChannelOption.TCP_NODELAY, true).childAttr(AttributeKey.newInstance("childAttr"), "childAttrValue").handler(new ServerHandler()).childHandler(new ChannelInitializer() {@Overridepublic void initChannel(SocketChannel ch) {ch.pipeline().addLast(new AuthHandler());//..}});ChannelFuture f = b.bind(8888).sync();f.channel().closeFuture().sync();复制代码 初始化线程( ServerBootsrap.bind()) netty初始化线程,创建一个 boss线程池,一个work线程池,并且给new了一个channel处理注册线程的连接,并且为这个channel 添加了一个 ServerBootstrapAcceptor的channel 。
操作线程: 主线程执行执行时机: 初始化线程执行代码: ServerBootsrap.bind()如何分配 client给thread?操作线程 : 主线程执行执行时机 : 新连接接入新连接的建立可以分为三个步骤 1.检测到有新的连接 2.将新连接注册到work线程组 3.注册新连接的读事件
BOSS线程组的 NioEventLoop.run() 不断检查所有的管道,当管道状态为可读或者连接的时候就会读取管道 。
if ((readyOps & (Selec

    推荐阅读