# 4.1 Redis服务器管理客户端的命令

## 4.1.1 获取和设置客户端的名字

* `CLIENT GETNAME`
  * 功能:获取客户端的名字
* `CLIENT SETNAME`
  * 语法:`CLIENT SETNAME name`
  * 功能:设置客户端的名字

例:

```
127.0.0.1:6379> CLIENT GETNAME
(nil)
```

```
127.0.0.1:6379> CLIENT SETNAME myName
OK
```

```
127.0.0.1:6379> CLIENT GETNAME
"myName"
```

## 4.1.2 通过`CLIENT LIST`命令查看客户端的信息

* `CLIENT LIST`
  * 功能:查看当前所有连接到服务器的客户端信息

例:

```
127.0.0.1:6379> CLIENT LIST
id=3 addr=127.0.0.1:59254 laddr=127.0.0.1:6379 fd=8 name=myName age=6363 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
```

其中:

|   属性  |       含义      |
| :---: | :-----------: |
|   id  |     客户端编号     |
|  addr |     客户端地址     |
| laddr |     服务端地址     |
|  age  | 客户端的连接时长,单位:秒 |
|  idle | 客户端的空闲时长,单位:秒 |
|  cmd  |   客户端最近执行的命令  |
|  user |  登录到服务器用到的用户名 |

## 4.1.3 通过`CLIENT PAUSE`命令暂停客户端的命令

* `CLIENT PAUSE`
  * 语法:`CLIENT PAUSE timeout`
  * 功能:若当前Redis服务器负载过大,可通过该命令暂停执行来自客户端的命令.其中`timeout`的单位为毫秒.服务端会在暂停的时长结束后再执行来自客户端的命令

例:暂停10s后执行命令

```
127.0.0.1:6379> CLIENT PAUSE 10000
OK
```

```
127.0.0.1:6379> SET name Peter
OK
(2.67s)
```

其中的2.67s表示该命令被暂停的时长

## 4.1.4 通过`CLIENT KILL`命令中断客户端连接

* `CLIENT KILL`
  * 语法:`CLIENT KILL [ip:port]`
  * 功能:中断指定的客户端连接

例:

查看当前所有连接

```
127.0.0.1:6379> CLIENT LIST
id=3 addr=127.0.0.1:59254 laddr=127.0.0.1:6379 fd=8 name=myName age=6919 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
id=4 addr=127.0.0.1:46400 laddr=127.0.0.1:6379 fd=9 name= age=20 idle=20 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20496 events=r cmd=command user=default redir=-1
id=5 addr=127.0.0.1:40846 laddr=127.0.0.1:6379 fd=10 name= age=2 idle=2 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20496 events=r cmd=command user=default redir=-1
```

注:此处通过`docker exec -it myFirstRedis /bin/bash`进入容器后,再执行`redis-cli`,即可再创建一个客户端连接

中断IP为127.0.0.1,端口为46400的连接:

```
127.0.0.1:6379> CLIENT KILL 127.0.0.1:46400
OK
127.0.0.1:6379> CLIENT LIST
id=3 addr=127.0.0.1:59254 laddr=127.0.0.1:6379 fd=8 name=myName age=7040 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
id=5 addr=127.0.0.1:40846 laddr=127.0.0.1:6379 fd=10 name= age=123 idle=123 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20496 events=r cmd=command user=default redir=-1
```

在被中断的客户端中执行命令:

```
127.0.0.1:6379> CLIENT LIST
Error: Server closed the connection
```

可以看到,该客户端的连接已经被中断了

注:该命令只是中断客户端的链接,并不是中断服务器本身的服务

## 4.1.5 通过`SHUTDOWN`命令关闭服务器和客户端

* `SHUTDOWN`
  * 功能:终止服务端上的所有连接并终止服务端

例:

```
127.0.0.1:6379> SHUTDOWN
not connected>
```
