8、客户端

客户端属性:
  套接字描述符: redisClient.fd属性值可以是-1或者是大于-1的整数
    伪客户端的fd属性值是-1,伪客户端处理的命令请求来源于载入AOF文件或者lua脚本,而不是网络,所以这种客户端不需要套接字连接,自然也不需要记录套接字描述符。
    普通客户端的fd属性大于-1,因为它要通过套接字来于服务器进行通信,所有服务器会用fd属性来记录客户端套接字的描述符
  输入缓冲区:redisClient.querybuf,用来保存客户端的请求命令
命令参数:redisCilent.argv和redisClient.argc,argv是一个数组,服务器将请求的参数保存到输入缓冲区后,并对其进行分析,分析后的命令参数保存在argv中,命令参数的个数保存在argc中。
  输出缓冲区:用来保存命令的回复结果,每个客户端都有两个输出缓冲区,一个缓冲区是固定的,另一个是可变的,最大不能超过1GB,否则关闭客户端连接。
    固定大小的缓冲区:用来保存那些长度比较小的回复,比如OK,简短的字符串,整数值,错误回复等,固定缓冲区默认大小是16*1024,即16kb
    可变大小缓冲区:用来保存那些长度比较大的回复。
    为了避免客户端的回复过大,占用服务器资源,redis服务器使用两种模式来限制输出缓冲区大小
      1、硬性模式限制(hard limit):如果输出缓冲区大小超出硬性模式设置的大小,服务器立即关闭客户端
      2、软性模式限制(soft limit):如果输出缓冲区超出了软性缓冲区设置的大小,但是没有超出硬性限制设置的大小,那么服务器会记录客户端到达软性限制的起始时间,当在一定时间内,客户端的输出缓冲区一直超出软性限制的大小,那么服务器会关闭客户端连接。
    可以通过client-output-buffer-limit命令设置硬性和软性模式限制。
    语法:client-output-buffer-limit
    示例(默认值):
    //普通客户端的限制,最大不能超过1GB,否则关闭客户端连接
    client-output-buffer-limit normal 0 0 0
    //从服务器客户端的限制
    client-output-buffer-limit slave 256mb 64mb 60
    //带有发布和订阅功能的客户端限制
    client-output-buffer-limit pubsub 32mb 8mb 60
    身份验证:redisClient.authenticated,只有当开启身份验证后,该属性才可用,1:通过,0:未通过

客户端的连接信息查看
  输入命令 client list
  返回结果:id=2 addr=127.0.0.1:65025 fd=9 name= age=34924 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
  fd:文件描述符
  name:名字,默认情况下,一个连接到服务端的客户端是没有名字的,可以通过client setname 命令设置
  age:以秒计算的已连接时长
  idle:以秒计算的空闲时间
  flags:记录了客户端的角色以及目前所处的状态,取值如下:
    O : 客户端是 MONITOR 模式下的附属节点(slave)
    S : 客户端是一般模式下(normal)的附属节点
    M : 客户端是主节点(master)
    x : 客户端正在执行事务
    b : 客户端正在等待阻塞事件
    i : 客户端正在等待 VM I/O 操作(已废弃)
    d : 一个受监视(watched)的键已被修改, EXEC 命令将失败
    c : 在将回复完整地写出之后,关闭链接
    u : 客户端未被阻塞(unblocked)
    A : 尽可能快地关闭连接
    N : 未设置任何 flag
    db:客户端使用的数据库id
    sub:已订阅频道的数量
    psub:已订阅模式的数量
    multi:在事务中执行的命令数量
    qbuf:查询缓冲的长度,长度为0,代表没有分配查询缓冲区
    qbuf-free:查询缓冲区的剩余空间长度
    obl:输出缓冲区的长度
    oll:输出列表包含的对象数量,当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里
  omem:输出缓冲区和输出列表占用的内存总量
  events:文件描述符事件,r=readable,w=writeable
  cmd:最近一次执行的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值