如何判断连接到Redis和blocking的是什么?

如何判断连接到Redis和blocking的是什么?,redis,Redis,我有一个redis缓存,它的使用率一直达到100% 当我运行客户端列表时 我得到这个: redis 127.0.0.1:6379> CLIENT LIST addr=127.0.0.1:54210 fd=5 name= age=27325 idle=18609 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=incrby addr=127.0.

我有一个redis缓存,它的使用率一直达到100%

当我运行
客户端列表时

我得到这个:

    redis 127.0.0.1:6379> CLIENT LIST
    addr=127.0.0.1:54210 fd=5 name= age=27325 idle=18609 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=incrby
    addr=127.0.0.1:54211 fd=6 name= age=27325 idle=18610 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=exec
    addr=127.0.0.1:54212 fd=7 name= age=27325 idle=24817 flags=b db=0 sub=0 psub=0 multi=-1 qbuf=2916 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=blpop
    addr=127.0.0.1:54213 fd=8 name= age=27325 idle=27325 flags=b db=0 sub=0 psub=0 multi=-1 qbuf=2646 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=blpop
    addr=127.0.0.1:54214 fd=9 name= age=27325 idle=27325 flags=b db=0 sub=0 psub=0 multi=-1 qbuf=2156 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=blpop
    addr=127.0.0.1:54215 fd=10 name= age=27325 idle=18609 flags=b db=0 sub=0 psub=0 multi=-1 qbuf=2254 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=blpop
    addr=127.0.0.1:54216 fd=11 name= age=27325 idle=21886 flags=b db=0 sub=0 psub=0 multi=-1 qbuf=2842 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=blpop
    addr=127.0.0.1:54217 fd=12 name= age=27325 idle=27325 flags=b db=0 sub=0 psub=0 multi=-1 qbuf=441 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=blpop
    addr=127.0.0.1:54218 fd=13 name= age=27325 idle=27325 flags=b db=0 sub=0 psub=0 multi=-1 qbuf=441 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=blpop
    addr=127.0.0.1:54219 fd=14 name= age=27325 idle=27325 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=info
    addr=127.0.0.1:54220 fd=15 name= age=27325 idle=27325 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=info
    addr=127.0.0.1:54221 fd=16 name= age=27286 idle=18609 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=hset
    addr=127.0.0.1:54222 fd=17 name= age=27286 idle=18610 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=exec
    addr=127.0.0.1:54223 fd=18 name= age=27286 idle=18609 flags=N db=0 sub=1 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe
    addr=127.0.0.1:54302 fd=19 name= age=27 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
为什么有这么多flag=b(客户端阻塞)?我如何知道这些是什么以及为什么阻塞

为什么有这么多flag=b(客户端阻塞)

flag=b
表示这些客户端正在运行阻塞命令

我怎么知道这些是什么

在您的情况下,这些客户端正在向Redis发送
BLPOP
命令,即
cmd=BLPOP

为什么要封锁

BLPOP
当给定的
列表中没有元素时,命令会阻止连接。有关详细信息,请参阅

为什么有这么多flag=b(客户端阻塞)

flag=b
表示这些客户端正在运行阻塞命令

我怎么知道这些是什么

在您的情况下,这些客户端正在向Redis发送
BLPOP
命令,即
cmd=BLPOP

为什么要封锁


BLPOP
当给定的
列表中没有元素时,命令会阻止连接。有关详细信息,请参阅。

此长阻塞blpop是否有问题?如果是这样的话,我该如何预防或设置TTL或寿命长度?这取决于您的情况
BLPOP
是一项功能,使Redis可以作为队列工作。因此,您应该询问是否需要太多的队列,或者是否需要太多的客户端等待队列。此外,这些客户机可能不是问题所在。因为阻塞客户机不会花费太多的CPU时间。这种长时间阻塞blpop不好吗?如果是这样的话,我该如何预防或设置TTL或寿命长度?这取决于您的情况
BLPOP
是一项功能,使Redis可以作为队列工作。因此,您应该询问是否需要太多的队列,或者是否需要太多的客户端等待队列。此外,这些客户机可能不是问题所在。因为阻塞客户端不会花费太多的CPU时间。这里真正的问题是什么占用了您的CPU,阻塞CONN也不会太贵。首先检查一下你的slowlog。这里真正的问题是什么占用你的CPU,阻塞CONN不会太贵。从检查你的慢语开始。