从0到1手写缓存cache之初步实现缓存框架

实现原理如下:

图片

  1. 定义插件接口
  • init初始化方法;
  • startup启动方法;
  • shutdown停止方法;

图片

  1. 实现CacheServer
  • 声明为bean
  • 定义端口6379;
  • 定义boss和worker

图片

在startup方法中定义netty server,添加CacheHandle和CacheDecoder

图片

在shutdown方法中,关闭channel,boss和worker

图片

  1. 实现CacheDecoder

继承ByteToMessageDecoder,从ByteBuf中读取输入,转成String输出

图片

  1. 实现CacheHandle

继承SimpleChannelInboundHandler,重写channelRead0方法。

图片

在channelRead0方法,读取参数,解析命令,支持命令COMMAND,PING,INFO。*和$都是redis协议规范。

图片

解析命令后,构造输出。

图片

  1. 实现MidnightApplicationListener

事件ApplicationReadyEvent启动插件,完成初始化。ContextClosedEvent事件关闭插件。

图片

  1. 测试

启动redis client,命令都可以正常解析。

图片

源码:https://github.com/midnight2104/midnight-cache