美文网首页
redis(13)服务器

redis(13)服务器

作者: 大飞飞_s8 | 来源:发表于2019-09-26 19:39 被阅读0次

1、命令请求的执行过程

1.1、客户端向服务器发送命令请求set key value

1.2、服务器接收并处理客户端发送来的命令,在数据库中进行设置,并产生命令回复

1.3、服务器将命令回复发送给客户端

1.4、客户端收到服务器命令回复,并将这个回复打印给用户

2、发送命令请求

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

3、读取命令请求

1)、读取套接字中协议格式的命令请求,并将其保存到客户端状态的输入缓冲区里面

2)、对缓冲区中的命令请求进行分析,提取出命令请求中包含的命令参数,以及命令参数的个数,然后分别保存到客户端状态的argv属性和argc属性里面

3)、调用命令执行器,执行客户端制定命令

3、命令执行器

1)、首先根据客户端状态的argv[0]参数,在命令表(command table) 中查找参数所指定的命令,并将找到的命令保存到客户端状态的cmd属性里面,命令表是一个字典

命令名字大小写不影响结果

2)、执行预备操作

检查cmd指针是否指向null,null则不执行后续步骤

cmd找到redisCommand结构的artity属性,检查命令请求所给定的参数个数是否正确,比如artity=-3,那么输入参数个数必须大于等于3

验证身份

如果开启maxmemory功能,那么检查内存占用情况,需要时,进行回收

如果客户端正在使用subscribe命令订阅频道,或者正在用psubscribe订阅,那么服务器只会执行客户端发来的subscribe psubscribe unsubscribe unpsubscribe

如果服务器正在进行数据载入,那么客户端发送命令必须带有标志1

如果服务器因为执行lua脚本而超时并进入阻塞状态,那么服务器只会执行客户端发来的shutdown nosave 和 script kill 命令,其他被拒绝

如果服务器正在执行事务,那么服务器只会执行客户端发来的exec discard multi watch 四个命令,其他的被放进事物队列

如果服务器打开监视器功能,则将要执行的命令发送给监视器

当完成以上预备操作之后,服务器就可以开始真正执行命令了

3)、调用命令的实现函数

4)、执行后续工作

如果开启慢日志查询,则判断是否需要记录慢日志

根据命令所耗费时长,更新被执行命令的redisCommand结构的milliseconds属性,并将命令的redisCommand结构的calls计数器的值增一

如果开启aof持久化,则写入aof缓冲区

如果从服务器正在复制当前服务器,则服务器将执行的命令传播给所有从服务器

4、serverCron函数

serverCron函数默认每隔100毫秒执行一次,这个函数负责管理服务器的资源,并保持服务器自身运作良好

serverCron每隔100毫秒一次的频率更新unixtime属性和mstime属性,当前时间,所以这两个属性记录的时间精度不高

5、初始化服务器

1)、初始化服务器状态结构

2)、载入配置选项

3)、初始化服务器数据结构

4)、还原数据库状态

相关文章

  • 搭建服务器-部署应用过程

    一、规划: 11,12,13,14,15,16 服务器 搭建redis集群11,12,13 服务器 搭建mongo...

  • Ubuntu16.04安装并配置Redis

    安装Redis服务器端 安装完成后,Redis服务器会自动启动,我们检查Redis服务器程序 检查Redis服务器...

  • redis(13)服务器

    1、命令请求的执行过程 1.1、客户端向服务器发送命令请求set key value 1.2、服务器接收并处理客户...

  • ubuntu安装redis

    在终端中安装Redis服务器端 //在终端中安装Redis服务器端 检查Redis服务器程序安装完成后,Redis...

  • Redis简述

    Redis 安装 brew install redis 运行redis服务器 nohup redis-server...

  • day57-flask中连接数据库,登陆及session使用

    1普通登陆 1.1服务器上安装redis 先查看服务器上是否已有redis:redis-cli或者redis-se...

  • docker安装mysql、redis并映射到本地

    redis 拉取redis镜像 docker pull redis:latest 在服务器/home/redis/...

  • Redis主从复制的原理

    在Redis集群中,让若干个Redis服务器去复制另一个Redis服务器,我们定义被复制的服务器为主服务器(mas...

  • redis使用

    redis服务器启动 redis-server redis.conf redis6380.conf就是redis....

  • Redis 服务器

    Redis 服务器 Redis 服务器命令主要是用于管理 redis 服务。 实例 以下实例演示了如何获取 red...

网友评论

      本文标题:redis(13)服务器

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