redis原理详细图解(图解Redis-命令系统设计)
redis原理详细图解(图解Redis-命令系统设计)详细执行过程如下:命令执行器的处理过程以上就是Redis命令系统设计的介绍,如果各位还想了解更多,欢迎转发 评论 关注,Redis图解系列专栏持续更新中。
Redis命令相关的数据结构主要有两个:redisCommandTable是一个命令列表,该列表注册了所有的redis支持的命令。另外一个是redisCommand,这就是真正的命令实现了,该结构的proc属性是一个函数指针,指向的命令具体实现函数。
Redis命令结构Redis命令结构
- redisCommandTable:命令表,定义了命令操作符、参数个数及对应实现等信息
- redisCommand:命令结构,内部描述了命令的属性,其中proc是一个函数指针,指向命令的实现函数
一个命令的请求从发送获取回复的过程中,客户端和服务器需要完成一系列的操作,如下图所示是一个set命令的执行过程:
- 当服务端收到客户端请求后会通过请求处理器创建一个redisClient并追加到服务器redisServer的clients链表中
- 建立连接后通过socket接收到后续客户端发送的命令,Redis通过对应命令执行器执行完成后返回给客户端结果
服务器接收到客户端命令存储的数据结构
详细执行过程如下:
命令执行器的处理过程
- aeMain主线程轮询到事件队列的读就绪事件,并调用事件对应的事件处理器-命令请求处理器
- 命令请求处理器开始读取socket中客户端发送来的数据至redisClient命令接收缓冲区
- 主线程通过redisClient命令请求缓冲区中的命令信息开始执行业务
- 首先通过读取到的命令信息,在命令注册表中找到命令的实现函数
- 开始命令执行前的预校验工作,比如访问权限、参数个数等校验
- 执行命令实现函数,获取执行结果后,调用addApply函数将命令执行结果写入到redisClient的命令回复缓冲区,派发可写事件至事件队列
- 命令回复处理器接收到事件开始从命令回复缓冲区读取回复内容,并通过socket发送给客户端
以上就是Redis命令系统设计的介绍,如果各位还想了解更多,欢迎转发 评论 关注,Redis图解系列专栏持续更新中。