编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

图解Redis-命令系统设计(redis命令大全)

wxchong 2024-10-27 15:50:50 开源技术 90 ℃ 0 评论

Redis命令相关的数据结构主要有两个:redisCommandTable是一个命令列表,该列表注册了所有的redis支持的命令。另外一个是redisCommand,这就是真正的命令实现了,该结构的proc属性是一个函数指针,指向的命令具体实现函数。

Redis命令结构

  • redisCommandTable:命令表,定义了命令操作符、参数个数及对应实现等信息
  • redisCommand:命令结构,内部描述了命令的属性,其中proc是一个函数指针,指向命令的实现函数

Redis命令执行器

一个命令的请求从发送获取回复的过程中,客户端和服务器需要完成一系列的操作,如下图所示是一个set命令的执行过程:

  • 当服务端收到客户端请求后会通过请求处理器创建一个redisClient并追加到服务器redisServer的clients链表中
  • 建立连接后通过socket接收到后续客户端发送的命令,Redis通过对应命令执行器执行完成后返回给客户端结果

详细执行过程如下:

  • aeMain主线程轮询到事件队列的读就绪事件,并调用事件对应的事件处理器-命令请求处理器
  • 命令请求处理器开始读取socket中客户端发送来的数据至redisClient命令接收缓冲区
  • 主线程通过redisClient命令请求缓冲区中的命令信息开始执行业务
  • 首先通过读取到的命令信息,在命令注册表中找到命令的实现函数
  • 开始命令执行前的预校验工作,比如访问权限、参数个数等校验
  • 执行命令实现函数,获取执行结果后,调用addApply函数将命令执行结果写入到redisClient的命令回复缓冲区,派发可写事件至事件队列
  • 命令回复处理器接收到事件开始从命令回复缓冲区读取回复内容,并通过socket发送给客户端

以上就是Redis命令系统设计的介绍,如果各位还想了解更多,欢迎转发+评论+关注,Redis图解系列专栏持续更新中。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表