美文网首页技术干货
redis设计与实现-客户端和服务器

redis设计与实现-客户端和服务器

作者: 求索 | 来源:发表于2020-03-05 12:58 被阅读0次

    客户端

    • 服务器使用clients链表连接起多个客户端状态,新客户端放在链表后面
    • 输出缓冲区记录客户端发送的命令请求,缓冲区大小不能超过1G,可配置
    • 客户端连接上服务器是,服务器会创建客户端的状态。网络连接关闭、发送不符合协议规范的请求、client kill命令、空间转移超时、输出缓冲区大小超出限制都会关闭客户端
    • lua脚步的伪客户端在服务器初始化时创建,一直到服务器关闭时才关闭。
    • 载入AOF文件时的伪客户端在载入完毕后完毕。

    服务器

    一个命令发送流程:

    1. 客户端发送给服务器
    2. 服务器读取命令请求,并分析出命令参数
    3. 命令执行器根据命令参数查找命令实现函数
    4. 执行命令实现函数并得出命令回复

    serverCron函数:

    • 更新服务状态信息
    • 处理服务器接收的SIGTERM信号
    • 管理客户端资源状态和数据库状态
    • 检测并执行持久化操作等

    客户端命令

     CLIENT LIST            #返回连接到 redis 服务的客户端列表
     CLIENT SETNAME #设置当前连接的名称
     CLIENT GETNAME #获取通过 CLIENT SETNAME 命令设置的服务名称
     CLIENT PAUSE           #挂起客户端连接,指定挂起的时间以毫秒计
     CLIENT KILL            #关闭客户端连接
    

    授权登录命令

    AUTH 'password'
    

    配置信息获取

    config get 可以获取服务端配置信息(redis.conf中的配置)

    127.0.0.1:6379> config get *
      1) "dbfilename"
      2) "dump.rdb"
      3) "requirepass"
      4) ""
      5) "masterauth"
      6) ""
      7) "cluster-announce-ip"
      8) ""
      9) "unixsocket"
     10) ""
     11) "logfile"
     12) ""
     13) "pidfile"
     14) "/var/redis/run/redis_6379.pid"
     15) "slave-announce-ip"
    ... 
    
    

    相关文章

      网友评论

        本文标题:redis设计与实现-客户端和服务器

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