0
点赞
收藏
分享

微信扫一扫

redis客户端的创建与关闭

redis客户端的创建与关闭

创建普通客户端

客户端通过网络连接与服务器进行连接的普通客户端,在客户端使用connect函数连接到服务器时,服务器就会调用连接事件处理器,为客户端创建相应的客户端状态,并将这个新的客户端状态添加到服务端结构中的clients链表的末尾。

关闭普通客户端

普通客户端关闭原因:

  • 客户端进程退出或被杀死,客户端与服务器之间的网络连接将被关闭,造成客户端被关闭
  • 客户端向服务器发送带有不符合协议格式的命令请求,客户端也会被服务器关闭
  • 客户端是CLIENT KILL命令的目标,将会被关闭
  • 用户为服务器设置了timeout配置选项,客户端的空转时间超过timeout设置的值,客户端将被关闭。
  • 客户端发送命令请求超过输入缓冲区的限制大小(默认1GB),客户端就会被服务器关闭
  • 发送客户端的命令回复的大小超过了输出缓冲区的限制大小,客户端会被关闭

输出缓冲区是可变大小缓冲区,但为了避免客户端回复过大,占用过多的服务器资源,服务器会时刻检查客户端的输出缓冲区的大小,并在缓冲区大小超出范围时进行限制:

硬性限制:超过硬性限制设置的大小,服务器立即关闭客户端

软性限制:超过软性限制设置的大小,服务器记录客户端到达软性限制的时间,并继续监视客户端,如果输出缓冲区一直超过软性限制,持续时间超过服务器设定的时长,服务器关闭客户端。如果不超过软性限制,客户端不会被关闭,并将记录的时间清零

伪客户端的关闭

服务器在初始化时创建负责执行lua脚本中redis命令的伪客户端,并将伪客户端关联的服务器记录在redisServer结构中的lua_client属性中,在服务器运行时一直存在,在服务器关闭的时候这个伪客户端才会关闭

服务器在载入AOF文件时,创建用于执行AOF文件包含的redis命令的伪客户端,载入完成后关闭伪客户端

举报

相关推荐

redis客户端

Redis 的 Java 客户端

Redis的java客户端

Redis的PHP客户端

Node 创建客户端

win redis客户端

0 条评论