id=35 addr=192.168.4.152:56627 fd=41 name= age=427224 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=get


对于qbuf,qbuf-free,其代表输入缓冲区,官方文档上解释如下:

qbuf: query buffer length (0 means no query pending)

qbuf-free: free space of the query buffer (0 means the buffer is full)


qbuf=0,说明没有命令积压。

qbuf-free=32768,若按照文档的解释,似乎不好理解,其实是说申请了32768字节的内存给后续的命令。命令来了会先放入qbuf中,然后Redis一个一个读取出来处理。



对于obl,oll,omem,其代表输出缓冲区,文档上解释如下:

obl: output buffer length

oll: output list length (replies are queued in this list when the buffer is full)

omem: output buffer memory usage


输出缓冲区有两部分组成,固定缓冲区(obl)和动态缓冲区(oll)。固定缓冲区只有16KB大小,即返回数据量大于16KB时,就会用到动态缓冲区。两者的计算方式不一样,固定缓冲区使用字节为单位,动态缓冲区使用对象个数。omem是指动态缓冲区+固定缓冲区的总字节数。



上面关于输入和输出缓冲区2组参数含义,单单看文档,理解是不透彻的,最好可以结合源码来看。所以嘛,代码是最直接的生产力。