Redis的连接ip有哪些?
最近在负责公司的Redis统一升级的工作:
- 那么我们就需要将业务迁移到新版本的Redis上。
- 关掉旧版本的Redis。
那么问题来了,我们在关掉旧的Redis的时候,就需要排查哪些系统在调用这个Redis。
方法一:lsof -i:port
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-cli 5214 zhangjin 3u IPv4 3147120732 0t0 TCP host-10-160-11-147:59668->host-10-160-11-147:6388 (ESTABLISHED)
方法二:登录到Redis上,运行命令client list
id=11008 addr=10.160.11.147:53306 fd=9 name=sentinel-879a83a9-cmd age=9250744 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=11009 addr=10.160.11.147:53308 fd=10 name=sentinel-879a83a9-pubsub age=9250744 idle=1 flags=P db=0 sub=1 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe
id=11006 addr=10.160.11.146:38636 fd=7 name=sentinel-38191f60-pubsub age=9250744 idle=1 flags=P db=0 sub=1 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe
id=11007 addr=10.160.11.146:38634 fd=8 name=sentinel-38191f60-cmd age=9250744 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=11010 addr=10.160.11.146:40948 fd=13 name= age=9250744 idle=1 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=replconf
id=204937 addr=10.160.11.147:59668 fd=11 name= age=1982 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client
方法二的返回详解
对比可知,直接登录到Redis上,运行client list更加的准确和具体。
以下是通过这种方式,各个域的含义:
- addr : 客户端的地址和端口
- fd : 套接字所使用的文件描述符
- age : 以秒计算的已连接时长
- idle : 以秒计算的空闲时长
- flags : 客户端 flag
- db : 该客户端正在使用的数据库 ID
- sub : 已订阅频道的数量
- psub : 已订阅模式的数量
- multi : 在事务中被执行的命令数量
- qbuf : 查询缓冲区的长度(字节为单位, 0 表示没有分配查询缓冲区)
- qbuf-free : 查询缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
- obl : 输出缓冲区的长度(字节为单位, 0 表示没有分配输出缓冲区)
- oll : 输出列表包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)
- omem : 输出缓冲区和输出列表占用的内存总量
- events : 文件描述符事件
- cmd : 最近一次执行的命令
客户端 flag 可以由以下部分组成:
- O : 客户端是 MONITOR 模式下的附属节点(slave)
- S : 客户端是一般模式下(normal)的附属节点
- M : 客户端是主节点(master)
- x : 客户端正在执行事务
- b : 客户端正在等待阻塞事件
- i : 客户端正在等待 VM I/O 操作(已废弃)
- d : 一个受监视(watched)的键已被修改, EXEC 命令将失败
- c : 在将回复完整地写出之后,关闭链接
- u : 客户端未被阻塞(unblocked)
- A : 尽可能快地关闭连接
- N : 未设置任何 flag
文件描述符事件可以是:
- r : 客户端套接字(在事件 loop 中)是可读的(readable)
- w : 客户端套接字(在事件 loop 中)是可写的(writeable)