mini-redis源码分析-存储篇
概述篇对mini-redis的模块结构进行了介绍,并构建了具有日志能力的基本项目结构。存储篇将对mini-redis的数据存储进行分析,并在存储上实现其需要对外提供的功能。
提供的功能
在分析存储模块的实现前,我们首先对存储模块所需提供的功能进行分析。mini-redis 在整体上提供了两套功能,带有过期能力的KV存储、发布-订阅功能。
在KV存储方面,需要提供根据键获取值的 get 功能和提供键、值以及可选的有效期的 set 功能。同时,需要在请求-响应之外提供按照过期时间清理过期数据的能力。
在发布-订阅方面,需要提供 subscribe 功能用于订阅特定通道,从而在给定的通道上发布消息时进行接收;还需要提供 publish 功能用于向给定的通道上发布消息。
由于不同客户端的处理任务需要共享相同的存储,存储模块需要能够在不同任务间共享,并保证线程安全。