# 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>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://redis.sai.show/di-4-zhang-shi-jian-redis-fu-wu-qi-he-ke-hu-duan-de-cao-zuo/4.1-redis-fu-wu-qi-guan-li-ke-hu-duan-de-ming-ling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
