网站首页 > 开源技术 正文
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图解系列专栏持续更新中。
猜你喜欢
- 2024-10-27 Golang 入门系列(七)整合Redis详解,实战
 - 2024-10-27 几个小技巧,让你的Redis程序快如闪电
 - 2024-10-27 掌握这些 Redis 技巧,百亿数据量不在话下
 - 2024-10-27 「高频 Redis 面试题」Redis 事务是否具备原子性?
 - 2024-10-27 Spring系列之Redis的两种集成方式
 - 2024-10-27 架构篇-一分钟掌握可扩展架构(可扩展是什么意思)
 - 2024-10-27 Redis 数据持久化与发布订阅(redis持久化aof)
 - 2024-10-27 依赖倒置原则详解(对依赖倒置的表述错误的是)
 - 2024-10-27 五种分布式锁(分布式锁最佳实践)
 - 2024-10-27 Alibaba/IOC-golang 正式开源——打造服务于go开发者的IOC框架
 
欢迎 你 发表评论:
- 1590℃北京那些看上去很牛的车牌们!(北京厉害车牌)
 - 1107℃2025年度视频去水印软件TOP5对比:哪款最值得用
 - 683℃《我的世界》不同版本的差异 ——新手向
 - 595℃新疆话里的“虫子”
 - 516℃中兴光猫 Telnet下设置大全(中兴光猫命令大全)
 - 513℃蓝牙设备配对失败的系统性解决方案与技术解析
 - 509℃未备份电脑文件数据恢复的七种方法
 - 488℃工艺管道常用英文缩写 英汉对照
 
- 最近发表
 
- 标签列表
 - 
- jdk (81)
 - putty (66)
 - rufus (78)
 - 内网穿透 (89)
 - okhttp (70)
 - powertoys (74)
 - windowsterminal (81)
 - netcat (65)
 - ghostscript (65)
 - veracrypt (65)
 - asp.netcore (70)
 - wrk (67)
 - aspose.words (80)
 - itk (80)
 - ajaxfileupload.js (66)
 - sqlhelper (67)
 - express.js (67)
 - phpmailer (67)
 - xjar (70)
 - redisclient (78)
 - wakeonlan (66)
 - tinygo (85)
 - startbbs (72)
 - webftp (82)
 - vsvim (79)
 
 

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