Redis 服务器命令

BGREWRITEAOF

异步执行一个 AOF(AppendOnly File) 文件重写操作

  • Bgrewriteaof 命令用于异步执行一个 AOF(AppendOnly File) 文件重写操作。重写会创建一个当前 AOF 文件的体积优化版本
  • 即使 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改

注意:从 Redis 2.4 开始, AOF 重写由 Redis 自行触发, BGREWRITEAOF 仅仅用于手动触发重写操作。

redis 127.0.0.1:6379> BGREWRITEAOF
Background append only file rewriting started

BGSAVE

在后台异步保存当前数据库的数据到磁盘

BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。

redis> BGSAVE
Background saving started

CLIENT KILL [ip:port] [ID client-id]

关闭客户端连接

# 列出所有已连接客户端

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 127.0.0.1:6379> 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

CLIENT GETNAME

获取连接的名称。Client Getname 命令用于返回 CLIENT SETNAME 命令为连接设置的名字。因为新创建的连接默认是没有名字的,对于没有名字的连接,CLIENT GETNAME 返回空白回复。

# 新连接默认没有名字

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 PAUSE timeout

在指定时间内终止运行来自客户端的命令,用于阻塞客户端命令一段时间(以毫秒计)

CLIENT SETNAME connection-name

设置当前连接的名称

# 新连接默认没有名字

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"

# 在客户端列表中查看

redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:36851
fd=5
name=hello-world-connection     # <- 名字
age=51
...

# 清除名字

redis 127.0.0.1:6379> CLIENT SETNAME        # 只用空格是不行的!
(error) ERR Syntax error, try CLIENT (LIST | KILL ip:port)

redis 127.0.0.1:6379> CLIENT SETNAME ""     # 必须双引号显示包围
OK

redis 127.0.0.1:6379> CLIENT GETNAME        # 清除完毕
(nil)

CLUSTER SLOTS

获取集群节点的映射数组,即获取当前的集群状态,以数组形式展示

redis 127.0.0.1:6379> cluster slots
1) 1) (integer) 0
   2) (integer) 4095
   3) 1) "127.0.0.1"
      2) (integer) 7000
   4) 1) "127.0.0.1"
      2) (integer) 7004
2) 1) (integer) 12288
   2) (integer) 16383
   3) 1) "127.0.0.1"
      2) (integer) 7003
   4) 1) "127.0.0.1"
      2) (integer) 7007
3) 1) (integer) 4096
   2) (integer) 8191
   3) 1) "127.0.0.1"
      2) (integer) 7001
   4) 1) "127.0.0.1"
      2) (integer) 7005
4) 1) (integer) 8192
   2) (integer) 12287
   3) 1) "127.0.0.1"
      2) (integer) 7002
   4) 1) "127.0.0.1"
      2) (integer) 7006

COMMAND

获取 Redis 命令详情数组,返回所有的Redis命令的详细信息,以数组形式展示

redis 127.0.0.1:6379> COMMAND 

COMMAND COUNT

获取 Redis 命令总数

redis 127.0.0.1:6379> COMMAND COUNT
(integer) 163

COMMAND GETKEYS

获取给定命令的所有key

redis 127.0.0.1:6379> COMMAND GETKEYS MSET a b c d e f 
1) "a"
2) "c"
3) "e"

TIME

返回当前服务器时间,是一个包含两个字符串的列表:第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数。

redis 127.0.0.1:6379> TIME 
1) "1410856598"
2) "928370"

COMMAND INFO command-name [command-name ...]

获取指定 Redis 命令描述的数组

CONFIG GET parameter

获取指定配置参数的值

redis 127.0.0.1:6379> config get *max-*-entries* 
1) "hash-max-zipmap-entries"
2) "512"
3) "list-max-ziplist-entries"
4) "512"
5) "set-max-intset-entries"
6) "512"

CONFIG REWRITE

对启动 Redis 服务器时所指定的redis.conf配置文件进行改写

CONFIG SET 命令可以对服务器的当前配置进行修改,而修改后的配置可能和redis.conf文件中所描述的配置不一样,CONFIG REWRITE的作用就是通过尽可能少的修改,将服务器当前所使用的配置记录到redis.conf文件中。

以下是执行CONFIG REWRITE前,被载入到 Redis 服务器的redis.conf文件中关于appendonly选项的设置:

# ... 其他选项

appendonly no

# ... 其他选项

在执行以下命令之后:

127.0.0.1:6379> CONFIG GET appendonly           # appendonly 处于关闭状态
1) "appendonly"
2) "no"

127.0.0.1:6379> CONFIG SET appendonly yes       # 打开 appendonly
OK

127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "yes"

127.0.0.1:6379> CONFIG REWRITE                  # 将 appendonly 的修改写入到 redis.conf 中
OK

重写后的 redis.conf 文件中的 appendonly 选项将被改写:

# ... 其他选项

appendonly yes

# ... 其他选项

CONFIG SET parameter value

修改 redis 配置参数,无需重启

可以使用它修改配置参数,或者改变 Redis 的持久化(Persistence)方式

redis 127.0.0.1:6379> CONFIG GET slowlog-max-len
1) "slowlog-max-len"
2) "1024"

redis 127.0.0.1:6379> CONFIG SET slowlog-max-len 10086
OK

redis 127.0.0.1:6379> CONFIG GET slowlog-max-len
1) "slowlog-max-len"
2) "10086"

CONFIG RESETSTAT

重置 INFO 命令中的某些统计数据,包括:

  • Keyspace hits (键空间命中次数)
  • Keyspace misses (键空间不命中次数)
  • Number of commands processed (执行命令的次数)
  • Number of connections received (连接服务器的次数)
  • Number of expired keys (过期key的数量)
  • Number of rejected connections (被拒绝的连接数量)
  • Latest fork(2) time (最后执行 fork(2) 的时间)
  • The aof_delayed_fsync counter (aof_delayed_fsync 计数器的值)

DBSIZE

返回当前数据库的 key 的数量

redis 127.0.0.1:6379> DBSIZE
(integer) 5

redis 127.0.0.1:6379> SET new_key "hello_moto"     # 增加一个 key 试试
OK

redis 127.0.0.1:6379> DBSIZE
(integer) 6

DEBUG OBJECT key

获取 key 的调试信息

redis 127.0.0.1:6379> DEBUG OBJECT my_pc
Value at:0xb6838d20 refcount:1 encoding:raw serializedlength:9 lru:283790 lru_seconds_idle:150

redis 127.0.0.1:6379> DEBUG OBJECT your_mac
(error) ERR no such key

DEBUG SEGFAULT

让 Redis 服务崩溃

Redis Debug Segfault 命令执行一个非法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 调试

redis 127.0.0.1:6379> DEBUG SEGFAULT 
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

FLUSHALL

删除所有数据库的所有key

redis 127.0.0.1:6379> DBSIZE         # 0 号数据库的 key 数量
(integer) 9

redis 127.0.0.1:6379> SELECT 1       # 切换到 1 号数据库
OK

redis 127.0.0.1:6379> DBSIZE         # 1 号数据库的 key 数量
(integer) 6

redis 127.0.0.1:6379> flushall       # 清空所有数据库的所有 key
OK

redis 127.0.0.1:6379> DBSIZE         # 不但 1 号数据库被清空了
(integer) 0

redis 127.0.0.1:6379> SELECT 0       # 0 号数据库(以及其他所有数据库)也一样
OK

redis 127.0.0.1:6379> DBSIZE
(integer) 0

FLUSHDB

删除当前数据库的所有key

redis 127.0.0.1:6379> DBSIZE    # 清空前的 key 数量
(integer) 4

redis 127.0.0.1:6379> FLUSHDB
OK

redis 127.0.0.1:6379> DBSIZE    # 清空后的 key 数量
(integer) 0

INFO [section]

获取 Redis 服务器的各种信息和统计数值

通过给定可选的参数 section ,可以让命令只返回某一部分的信息:

  • server: 一般 Redis 服务器信息
  • clients: 已连接客户端信息
  • memory: 内存信息
  • persistence: RDB 和 AOF 的相关信息
  • stats: 一般统计信息
  • replication: 主/从复制信息
  • cpu: CPU 计算量统计信息
  • commandstats: Redis 命令统计信息
  • cluster: Redis 集群信息
  • keyspace: 数据库相关的统计信息

LASTSAVE

返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示

redis 127.0.0.1:6379> LASTSAVE 
(integer) 1410853592

MONITOR

实时打印出 Redis 服务器接收到的命令,调试用

redis 127.0.0.1:6379> MONITOR 
OK
1410855382.370791 [0 127.0.0.1:60581] "info"
1410855404.062722 [0 127.0.0.1:60581] "get" "a"

ROLE

返回主从实例所属的角色,角色有master, slave, sentinel

redis 127.0.0.1:6379> ROLE 
1) "master"
2) (integer) 0
3) (empty list or set)
redis> 

SAVE

同步保存数据到硬盘

Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘

redis 127.0.0.1:6379> SAVE 
OK

SHUTDOWN [NOSAVE] [SAVE]

异步保存数据到硬盘,并关闭服务器。Redis Shutdown 命令执行以下操作:

  • 停止所有客户端
  • 如果有至少一个保存点在等待,执行 SAVE 命令
  • 如果 AOF 选项被打开,更新 AOF 文件
  • 关闭 redis 服务器(server)
redis 127.0.0.1:6379> PING
PONG

redis 127.0.0.1:6379> SHUTDOWN

$

$ redis-cli
Could not connect to Redis at: Connection refused
not connected>

SLAVEOF host port

将当前服务器转变为指定服务器的从属服务器(slave server)

  • Redis Slaveof 命令可以将当前服务器转变为指定服务器的从属服务器(slave server)
  • 如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port 将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步
  • 另外,对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃
  • 利用『 SLAVEOF NO ONE 不会丢弃同步所得数据集』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行

SLOWLOG subcommand [argument]

管理 redis 的慢日志

  • Redis slowlog 是 Redis 用来记录查询执行时间的日志系统
  • 查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间
  • 另外,slow log 保存在内存里面,读写速度非常快,因此可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度

查看日志信息:

redis 127.0.0.1:6379> slowlog get 2
1) 1) (integer) 14
   2) (integer) 1309448221
   3) (integer) 15
   4) 1) "ping"
2) 1) (integer) 13
   2) (integer) 1309448128
   3) (integer) 30
   4) 1) "slowlog"
      2) "get"
      3) "100"

查看当前日志的数量:

redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 14

使用命令 SLOWLOG RESET 可以清空 slow log

redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 14

redis 127.0.0.1:6379> SLOWLOG RESET
OK

redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 0

SYNC

用于复制功能(replication)的内部命令,用于同步主从服务器

redis 127.0.0.1:6379> SYNC 
Entering slave output mode...  (press Ctrl-C to quit)
SYNC with master, discarding 18 bytes of bulk transfer...
SYNC done. Logging commands from master.
"PING"
"PING"
"PING"
"PING"

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/24/redis-server-commands/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Redis 服务器命令
BGREWRITEAOF 异步执行一个 AOF(AppendOnly File) 文件重写操作 Bgrewriteaof 命令用于异步执行一个 AOF(AppendOnly File) 文件重写操作。重写会创建一个……
<<上一篇
下一篇>>
文章目录
关闭
目 录