Redis设计与实现--02--单机数据库-06-服务端

一、命令请求的执行过程

  1. 步骤
    1. 客户端向服务器发送命令请求 SET KEY VALUE
    2. 服务器接受并处理客户端发来的请求,在数据库中进行设置操作
    3. 服务器将命令回复给客户端
    4. 客户端接受之后,打印出来
1. 发送命令请求
  1. 客户端中键入一个命令请求时,客户端会将这个命令请求转换成协议根式,然后通过连接到服务器的套接字,将协议格式的命令请求发送给服务器
    在这里插入图片描述
2. 读取命令请求
  1. 套接字可读时,服务器将调用命令请求处理器来执行
    1. 获取套接字中的命令请求,保存到客户端状态的输入缓存区中
    2. 分析输入缓冲区的命令,然后给argv和argc进行设置
    3. 根据argv[0]获取到redisCommand命令执行器,然后执行命令
  2. 查找命令执行器,就是上面的第三部,使用argv[0]在命令表中,获取到对应的执行器,然后赋值给,客户端状态的cmd,进行关联,然后执行命令。
  3. 在获取到命令执行,参数以及个数之后,还需要进行一些预备工作,可以理解为代码的校验工作,包括
    1. 检查客户端状态的cmd是为null,为null就没有执行器,自然不能执行
    2. 检查命令请求锁给定的参数个数是否正确
    3. 检查客户端是否已经通过了身份认证
      。一些校验工作的进行。。。。
  4. 进行了参数赋值,参数校验,之后肯定是执行命令了,执行完命令之后,产生命令回复,会被保存到客户端状态的输出缓冲区中,从此处可以看出,客户端状态维护了从接受到回复的全过程,对执行的流程是很清楚的。通过客户端状态就可以知道这个命令啥子情况。设计之美呀
  5. 执行完实现函数之后,服务器还会处理一些后续工作
    1. 如果开启了慢查询日志,那么进行慢查询日志记录
    2. 如果开启了AOF持久化,那么会将刚才的命令请求写入AOF中
    3. 如果有其他从服务器复制当前服务器,那么服务器会将刚刚执行的命令请求传播给所有从服务器。
  6. 此刻还没有回复客户端,那么,回复呗
    1. 命令实现函数会将命令回复保存到输出缓冲区里面
    2. 为客户端的套接字关联命令回复处理器
    3. 当客户端的套接字变为可写时,服务器就会执行命令回复处理器,将保存在客户端输出缓冲区中的命令回复发送给客户端
    4. 发送完毕之后,回复处理器会清空客户端状态的输出缓冲区,为处理下一个命令请求做好准备。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值