从0到1手写缓存cache之初步实现缓存框架
18 Jun 2024 |实现原理如下:
- 定义插件接口
- init初始化方法;
- startup启动方法;
- shutdown停止方法;
- 实现CacheServer
- 声明为bean
- 定义端口6379;
- 定义boss和worker
在startup方法中定义netty server,添加CacheHandle和CacheDecoder
在shutdown方法中,关闭channel,boss和worker
- 实现CacheDecoder
继承ByteToMessageDecoder,从ByteBuf中读取输入,转成String输出
- 实现CacheHandle
继承SimpleChannelInboundHandler,重写channelRead0方法。
在channelRead0方法,读取参数,解析命令,支持命令COMMAND,PING,INFO。*和$都是redis协议规范。
解析命令后,构造输出。
- 实现MidnightApplicationListener
事件ApplicationReadyEvent启动插件,完成初始化。ContextClosedEvent事件关闭插件。
- 测试
启动redis client,命令都可以正常解析。
源码:https://github.com/midnight2104/midnight-cache