Redis 服务器 单机数据库的实现

Redis命令请求的执行过程:


1.发送命令请求

客户端将命令请求转换成协议格式,通过连接到服务器的套接字发送给服务器。


2.读取命令请求

1)读取套接字协议格式的请求,保存到客户端状态的缓冲输入区。
2)分析缓冲区命令,提取命令参数及个数,分别保存到客户端状态的argv属性和argc属性。
3)调用命令执行器。

3.命令执行器

1)查找实现命令:根据客户端状态的argv[0]参数,查找参数指定的命令,保存到客户端状态的cmd属性。

2)执行预备操作:检查客户端cmd属性指向、参数个数、身份验证是否合法等等一系列服务器和客户端状态的校验。

3)调用命令的实现函数:函数调用产生setCommand(client)将产生一个 "+OK\r\n" 回复,保存到客户端的buf属性。

4)执行后续工作:根据配置执行相应操作,例如慢查询日志、AOF持久化、主从服务。


4.将命令回复发送给客户端:将协议格式的命令回复 +“OK\r\n”发送给客户端。

5.客户端接收并打印命令回复:将协议回复的 “OK\r\n” 转换成 “OK\n” 打印给用户。



Redis服务器中serverCron函数每隔100ms执行一次,该函数负责管理服务器资源并保持服务器良好运转。

  1. 更新服务器时间缓存
  2. 更新LRU时钟
  3. 更新服务器每秒执行命令次数
  4. 更新服务器内存峰值记录
  5. 处理SIGTERM信号
  6. 管理客户端资源
  7. 管理数据库资源
  8. 执行被延迟的BGREWRITEAOF
  9. 检查持久化操作的运行状态
  10. 将AOP缓冲区内容写入AOF文件
  11. 关闭异步客户端
  12. 增加cronloops计数器的值



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值