1. NioEventLoopGroup worker = new NioEventLoopGroup();
    2. byte[] LINE = {13, 10};
    3. try {
    4. Bootstrap bootstrap = new Bootstrap();
    5. bootstrap.channel(NioSocketChannel.class);
    6. bootstrap.group(worker);
    7. bootstrap.handler(new ChannelInitializer<SocketChannel>() {
    8. @Override
    9. protected void initChannel(SocketChannel ch) {
    10. ch.pipeline().addLast(new LoggingHandler());
    11. ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
    12. // 会在连接 channel 建立成功后,会触发 active 事件
    13. @Override
    14. public void channelActive(ChannelHandlerContext ctx) {
    15. set(ctx);
    16. get(ctx);
    17. }
    18. private void get(ChannelHandlerContext ctx) {
    19. ByteBuf buf = ctx.alloc().buffer();
    20. buf.writeBytes("*2".getBytes());
    21. buf.writeBytes(LINE);
    22. buf.writeBytes("$3".getBytes());
    23. buf.writeBytes(LINE);
    24. buf.writeBytes("get".getBytes());
    25. buf.writeBytes(LINE);
    26. buf.writeBytes("$3".getBytes());
    27. buf.writeBytes(LINE);
    28. buf.writeBytes("aaa".getBytes());
    29. buf.writeBytes(LINE);
    30. ctx.writeAndFlush(buf);
    31. }
    32. private void set(ChannelHandlerContext ctx) {
    33. ByteBuf buf = ctx.alloc().buffer();
    34. buf.writeBytes("*3".getBytes());
    35. buf.writeBytes(LINE);
    36. buf.writeBytes("$3".getBytes());
    37. buf.writeBytes(LINE);
    38. buf.writeBytes("set".getBytes());
    39. buf.writeBytes(LINE);
    40. buf.writeBytes("$3".getBytes());
    41. buf.writeBytes(LINE);
    42. buf.writeBytes("aaa".getBytes());
    43. buf.writeBytes(LINE);
    44. buf.writeBytes("$3".getBytes());
    45. buf.writeBytes(LINE);
    46. buf.writeBytes("bbb".getBytes());
    47. buf.writeBytes(LINE);
    48. ctx.writeAndFlush(buf);
    49. }
    50. @Override
    51. public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    52. ByteBuf buf = (ByteBuf) msg;
    53. System.out.println(buf.toString(Charset.defaultCharset()));
    54. }
    55. });
    56. }
    57. });
    58. ChannelFuture channelFuture = bootstrap.connect("localhost", 6379).sync();
    59. channelFuture.channel().closeFuture().sync();
    60. } catch (InterruptedException e) {
    61. log.error("client error", e);
    62. } finally {
    63. worker.shutdownGracefully();
    64. }