美文网首页
Redis--服务端

Redis--服务端

作者: 简书徐小耳 | 来源:发表于2019-04-19 14:22 被阅读0次

命令请求的执行过程

  • 1.客户端通过socket发送命令
  • 2.服务器端通过io多路复用器捕捉到socket,然后解析出对应的命令保存到客户端状态的输入缓冲区
  • 3.对输入缓冲区命令解析,解析的结果保存到客户端状态的argv和argc属性
  • 4.调用命令执行器,执行客户端命令。
  • 5.命令执行器根据指令名称去命令表寻找指定的命令,找到后就执行,找不到就返回错误。
  • 6.如果开启了慢查询功能,则记录命令执行的日志,可能还有AOF等。
  • 7.执行完毕的结果放入到输出缓冲区,然后执行命令回复。回复完毕清空输出缓冲区。

serverCron函数(每100毫秒执行一次)

  • 1.更新服务器时间缓存(redis服务器中获取当前时间其实大部分都是获取的缓存,底层有serverCron更新时间,避免无数的系统调用)
  • 2.更新LRU时钟的,每个redis对象都保存一个lru属性,然后计算空转时间就是拿LRU时钟减去lru属性。
  • 3.更新服务器每秒执行的命令次数,主要是抽样计算
  • 4.更新服务器内存峰值记录
  • 5.处理SIGTERM信号,该信号接收到之后设置关闭标志,而serverCron每次执行都会检查该标志,如果是关闭则开始关闭服务器
  • 6.清理过期的客户端连接,调整输入缓冲区大小。
  • 7.执行被延迟的BGREWRITEAOF
  • 8.检查持久化操作的运行状态
  • 9.将AOF缓冲区内容写入AOF文件
  • 10.关闭异常客户端

初始化服务器

  • 1.先创建redisServer
  • 2.载入配置选项
  • 3.初始化服务器数据结构
  • 4.初始化服务器的数据结构,比如客户端的链表,数据库数组等
  • 5.还原数据库状态
  • 6.执行主循环

相关文章

  • Redis--服务端

    命令请求的执行过程 1.客户端通过socket发送命令 2.服务器端通过io多路复用器捕捉到socket,然后解析...

  • Redis--复制

    Redis--复制 复制功能的实现 1.通过SLAVEOF命令可以让从服务器同步主服务器的数据。 旧版复制实现的机...

  • Redis--哈希

    哈希类型是指键值本身又是一个键值对结构 -----------------------------命令 ---设置...

  • Redis--命令

    设值 获值 设置过期时间(单位:s) 设置过期时间(单位:s) 设置过期时间(单位:ms) 设置UNIX过期时间戳...

  • Redis--集合

    集合(set)类型也是用来保存多个字符串元素的,但是和列表不一样的是,集合中不允许有重复元素,并且集合中元素是无序...

  • Redis--列表

    列表(list)类型是用来存储多个有序的字符串,一个列表最多可以储存2^32 - 1个元素,列表是比较灵活的数据结...

  • redis--使用

    一:redis中的数据类型 redis的数据存储:key=value 键值对 key<键>的数据类型:字符串 va...

  • redis--使用

    一:redis中的数据类型 redis的数据存储:key=value 键值对 key<键>的数据类型:字符串 va...

  • Redis--字典

    字典的应用范围 1.redis的DB就是一个字典 2.redis的hash键,当包含的键值较多,又或者键值对中的元...

  • Redis--链表

    链表 链表作用范围 1.列表键包含的数量较多时候使用。 2.列表中包含的元素都是较长的字符串时候使用 链表节点的组...

网友评论

      本文标题:Redis--服务端

      本文链接:https://www.haomeiwen.com/subject/cxuqgqtx.html