redis命令详解与使用场景举例——Server(服务器)

本文详细介绍了Redis服务器中的关键命令,包括BGREWRITEAOF、BGSAVE、CLIENT系列命令、CONFIG系列命令、FLUSHALL、FLUSHDB、INFO、LASTSAVE等,涵盖了数据持久化、客户端管理、服务器配置和监控等多个方面,旨在帮助读者理解和掌握Redis服务器的日常操作和管理。
摘要由CSDN通过智能技术生成

BGREWRITEAOF

执行一个 AOF文件 重写操作。重写会创建一个当前 AOF 文件的体积优化版本。
即使 BGREWRITEAOF 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 BGREWRITEAOF 成功之前不会被修改。
重写操作只会在没有其他持久化工作在后台执行时被触发,也就是说:
● 如果 Redis 的子进程正在执行快照的保存工作,那么 AOF 重写的操作会被预定(scheduled),等到保存工作完成之后再执行 AOF 重写。在这种情况下, BGREWRITEAOF 的返回值仍然是 OK ,但还会加上一条额外的信息,说明 BGREWRITEAOF 要等到保存操作完成之后才能执行。在 Redis 2.6 或以上的版本,可以使用 INFO 命令查看 BGREWRITEAOF 是否被预定。
● 如果已经有别的 AOF 文件重写在执行,那么 BGREWRITEAOF 返回一个错误,并且这个新的 BGREWRITEAOF 请求也不会被预定到下次执行。
从 Redis 2.4 开始, AOF 重写由 Redis 自行触发, BGREWRITEAOF 仅仅用于手动触发重写操作。
请移步 持久化文档(英文) 查看更多相关细节。
可用版本:
1.0.0+
时间复杂度:
O(N), N 为要追加到 AOF 文件中的数据数量。
返回值:
反馈信息。

redis> BGREWRITEAOF
Background append only file rewriting started

BGSAVE

在后台异步(Asynchronously)保存当前数据库的数据到磁盘。
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
客户端可以通过 LASTSAVE 命令查看相关信息,判断 BGSAVE 命令是否执行成功。
请移步 持久化文档 查看更多相关细节。
可用版本:
1.0.0+
时间复杂度:
O(N), N 为要保存到数据库中的 key 的数量。
返回值:
反馈信息。

redis> BGSAVE
Background saving started

CLIENT GETNAME

返回 CLIENT SETNAME 命令为连接设置的名字。
因为新创建的连接默认是没有名字的, 对于没有名字的连接, CLIENT GETNAME 返回空白回复。
可用版本
2.6.9
时间复杂度
O(1)
返回值
如果连接没有设置名字,那么返回空白回复;
如果有设置名字,那么返回名字。
新连接默认没有名字

redis 127.0.0.1:6379> CLIENT GETNAME
(nil)

设置名字

redis 127.0.0.1:6379> CLIENT SETNAME hello-world-connection
OK

返回名字

redis 127.0.0.1:6379> CLIENT GETNAME
"hello-world-connection"

CLIENT KILL ip:port

关闭地址为 ip:port 的客户端。
ip:port 应该和 CLIENT LIST 命令输出的其中一行匹配。
因为 Redis 使用单线程设计,所以当 Redis 正在执行命令的时候,不会有客户端被断开连接。
如果要被断开连接的客户端正在执行命令,那么当这个命令执行之后,在发送下一个命令的时候,它就会收到一个网络错误,告知它自身的连接已被关闭。
可用版本
2.4.0+
时间复杂度
O(N) , N 为已连接的客户端数量。
返回值
当指定的客户端存在,且被成功关闭时,返回 OK 。
列出所有已连接客户端

redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43501 fd=5 age=10 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

杀死当前客户端的连接

redis 127.0.0.1:6379> CLIENT KILL 127.0.0.1:43501
OK

之前的连接已经被关闭,CLI 客户端又重新建立了连接
之前的端口是 43501 ,现在是 43504

redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43504 fd=5 age=0 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

CLIENT LIST

以人类可读的格式,返回所有连接到服务器的客户端信息和统计数据。

redis> CLIENT LIST
addr=127.0.0.1:43143 fd=6 age=183 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
addr=127.0.0.1:43163 fd=5 age=35 idle=15 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
addr=127.0.0.1:43167 fd=7 age=24 idle=6 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get

可用版本
2.4.0
时间复杂度
O(N) , N 为连接到服务器的客户端数量。
返回值
命令返回多行字符串,这些字符串按以下形式被格式化:
● 每个已连接客户端对应一行(以 LF 分割)
● 每行字符串由一系列 属性=值 形式的域组成,每个域之间以空格分开
以下是域的含义:
● addr : 客户端的地址和端口
● fd : 套接字所使用的文件描述符
● age : 以秒计算的已连接时长
● idle : 以秒计算的空闲时长
● flags : 客户端 flag (见下文)
● db : 该客户端正在使用的数据库 ID
● sub : 已订阅频道的数量
● psub : 已订阅模式的数量
● multi : 在事务中被执行的命令数量
● qbuf : 查询缓存的长度( 0 表示没有查询在等待)
● qbuf-free : 查询缓存的剩余空间( 0 表示没有剩余空间)
● obl : 输出缓存的长度
● 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)
为了 debug 的需要,经常会对域进行添加和删除,一个安全的 Redis 客户端应该可以对 CLIENT LIST 的输出进行相应的处理(parse),比如忽略不存在的域,跳过未知域,诸如此类。

CLIENT SETNAME connection-name

为当前连接分配一个名字。
这个名字会显示在 CLIENT LIST 命令的结果中, 用于识别当前正在与服务器进行连接的客户端。
举个例子, 在使用 Redis 构建队列(queue)时, 可以根据连接负责的任务(role), 为信息生产者(producer)和信息消费者(consumer)分别设置不同的名字。
名字使用 Redis 的字符串类型来保存, 最大可以占用 512 MB 。 另外, 为了避免和 CLIENT LIST 命令的输出格式发生冲突, 名字里不允许使用空格。
要移除一个连接的名字, 可以将连接的名字设为空字符串 “” 。
使用 CLIENT GETNAME 命令可以取出连接的名字。
新创建的连接默认是没有名字的。
在 Redis 应用程序发生连接泄漏时,为连接设置名字是一种很好的 debug 手段。
可用版本
2.6.9+
时间复杂度
O(1)
返回值
设置成功时返回 OK 。
新连接默认没有名字

redis 127.0.0.1:6379> CLIENT GETNAME
(nil)

设置名字

redis 127.0.0.1:6379> CLIENT SETNAME hello-world-connection
OK</
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值