首页 > 代码库 > Redis学习笔记04Redis命令之(3)服务器操作

Redis学习笔记04Redis命令之(3)服务器操作

1.1.1. client list

列出所有客户端连接信息。

每个连接使用一个id=xxx的行表示。

 

 

redis.coe2coe.me:6379> client list

id=8 addr=192.168.197.101:42247 fd=6 name= age=169 idle=169 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command

id=9 addr=192.168.197.101:42248 fd=7 name= age=134 idle=114 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client

id=10 addr=192.168.197.101:42249 fd=8 name= age=4 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

 

id64bit唯一的客户端ID

addrIP地址和端口号。

fd:   socket对应的文件描述符。

name:客户端名称。使用client setname设置,client getname获取。

age:连接以来的时间,秒。

idle:空闲时间,秒。

flags:标志。

db:当前选择的数据库序号。

sub:频道订阅数量。

psub:模式匹配订阅数量。

multiMULTI/EXEC上下文中的命令数量。

qbuf:查询缓冲区长度。

qbuf-free:查询缓冲区空闲空间。

ob1:输出缓冲区长度。

ol1:输出链表长度,当输出缓冲区满时,回复信息在这个链表中排队。

omem:输出缓冲区内存使用。

events:文件描述符事件。

cmd:执行的最后一个命令。似乎只显示命令的第1个单词。

 

flags标志的含义如下:

O:客户端在MONITOR模式中作为slave

S:客户端是正常的slave

M:客户端是一个master

x: 客户端在MULTI/EXEC上下文中。

b:客户端在等待阻塞操作。

i:客户端在等待VM I/O(已废弃)

d:观察的keys已经被修改了。

c:连接在条目回复后将被关闭。

u:客户端是非阻塞的。

U:客户端通过Unix domain socket连接。

r:客户端作为一个集群结点在只读模式中。

A:连接将尽快被关闭。

N:没有设置标志。

 

 

 

 

 

 

1.1.2. client  setname

设置当前连接的客户端名称。

redis.coe2coe.me:6379> client setname redis1

OK

redis.coe2coe.me:6379> client getname

"redis1"

 

redis.coe2coe.me:6379> client setname ""

OK

redis.coe2coe.me:6379> client getname

(nil)

 

在设置客户端名称之后,如果被client kill删除了,则客户端名称被清空了。

                                                                                      

1.1.3. client  getname

获取当前连接的客户端名称。

redis.coe2coe.me:6379> client getname

(nil)

默认情况下名称为空。可使用client getname设置。

 

redis.coe2coe.me:6379> client setname redis1

OK

redis.coe2coe.me:6379> client getname

"redis1"

 

 

1.1.4. client kill

断开指定的客户端的连接,即删除指定的客户端。可按以下几种方式进行删除:

 

(1)参数为客户端连接的IP地址和端口号。

假定当前有redis1,redis2,redis3三个连接:

redis.coe2coe.me:6379> client list

id=13 addr=192.168.197.101:42252 fd=6 name=redis3 age=489 idle=4 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client

id=14 addr=192.168.197.101:42253 fd=7 name=redis1 age=477 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

id=15 addr=192.168.197.101:42254 fd=8 name=redis2 age=41 idle=10 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client

 

现在删除掉redis3这个连接,地址为192.168.197.101:42252

redis.coe2coe.me:6379> client kill 192.168.197.101:42252

OK

删除客户端成功。

 

再次查看客户端列表,只有2个连接了。

redis.coe2coe.me:6379> client list

id=14 addr=192.168.197.101:42253 fd=7 name=redis1 age=499 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

id=15 addr=192.168.197.101:42254 fd=8 name=redis2 age=63 idle=32 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client

redis.coe2coe.me:6379>

 

 

(2)按照客户端ID进行删除。

 

redis.coe2coe.me:6379> client kill id 14

(integer) 0

默认情况下,skipmetrue,删除当前连接似乎是删除不掉的。

 

redis.coe2coe.me:6379> client kill id 14 skipme no

(integer) 1

指定skipmeno,则可以成功删除当前连接。

 

redis.coe2coe.me:6379> client kill id 16

(integer) 1

id16的连接删除成功了。

 

客户端每次连接到redis服务后,产生一个新的IDID的序号总是不断的增加。

 

 

1.1.5. client pause

让所有客户端暂停指定时间,单位,毫秒。

 

 

redis.coe2coe.me:6379> client pause 10000

OK

所有客户端将暂停10秒钟。

 

立即执行client list指令:

redis.coe2coe.me:6379> client list

并不会立即取得相应结果,而是在等待了一段时间后才取得结果:

 

id=18 addr=192.168.197.101:42257 fd=6 name= age=152 idle=7 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client

id=19 addr=192.168.197.101:42258 fd=7 name=redis3 age=121 idle=1 flags=u db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client

id=20 addr=192.168.197.101:42259 fd=8 name=redis2 age=112 idle=4 flags=u db=0 sub=0 psub=0 multi=-1 qbuf=41 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client

(7.06s)

括号中的数字表明此命令等待了7.06秒。

 

 

1.1.6. monitor

实时监控Redis收到的各种命令,并反馈到执行monitor命令的客户端连接上。

 

redis.coe2coe.me:6379> monitor

OK

注意:此时不再显示redis提示符。

此时在其它客户端连接上执行一些命令,则这里可以看到所执行的命令,包含参数,但是不包括Redis反馈的执行结果。

 

1499848978.376966 [0 192.168.197.101:42265] "AUTH" "123456"

1499848978.377772 [0 192.168.197.101:42265] "COMMAND"

1499848991.031939 [0 192.168.197.101:42266] "AUTH" "123456"

1499849008.065442 [0 192.168.197.101:42266] "ping"

1499849034.680658 [0 192.168.197.101:42266] "echo" "hello"

1499849323.293098 [0 192.168.197.101:42267] "set" "host" "redis.coe2coe.me"

 

Redis学习笔记04Redis命令之(3)服务器操作