# Server命令
# ACL CAT
# 语法
ACL CAT [category]
# 描述
如果不带任何参数调用该命令,它会显示所有可用的 ACL 类别
# 参数
- category
传参数查具体命令,不传参数看所有分类
# 示例
> ACL CAT
1) "keyspace"
2) "read"
3) "write"
4) "set"
5) "sortedset"
6) "list"
7) "hash"
8) "string"
9) "bitmap"
10) "hyperloglog"
11) "geo"
12) "stream"
13) "pubsub"
14) "admin"
15) "fast"
16) "slow"
17) "blocking"
18) "dangerous"
19) "connection"
20) "transaction"
21) "scripting"
22) "json"
23) "search"
24) "tdigest"
25) "cms"
26) "bloom"
27) "cuckoo"
28) "topk"
29) "timeseries"
> ACL CAT dangerous
1) "flushdb"
2) "acl"
3) "slowlog"
4) "debug"
5) "role"
6) "keys"
7) "pfselftest"
8) "client"
9) "bgrewriteaof"
10) "replicaof"
11) "monitor"
12) "restore-asking"
13) "latency"
14) "replconf"
15) "pfdebug"
16) "bgsave"
17) "sync"
18) "config"
19) "flushall"
20) "cluster"
21) "info"
22) "lastsave"
23) "slaveof"
24) "swapdb"
25) "module"
26) "restore"
27) "migrate"
28) "save"
29) "shutdown"
30) "psync"
31) "sort"
# ACL DELUSER
# 语法
ACL DELUSER username [username ...]
# 描述
删除所有指定的 ACL 用户,并强制断开这些用户已认证的所有连接
# 参数
- username
一个或多个要删除的用户名
# 示例
> ACL DELUSER antirez
1
# ACL DRYRUN
# 语法
ACL DRYRUN username command [arg [arg ...]]
# 描述
模拟指定用户执行给定命令。该命令可用于测试指定用户的权限,而无需实际启用该用户,也不会产生执行该命令所带来的副作用
# 参数
- username
一个或多个要删除的用户名
- command
要测试的命令
- arg
要传递给被测试命令的参数
# 示例
> ACL SETUSER VIRGINIA +SET ~*
"OK"
> ACL DRYRUN VIRGINIA SET foo bar
"OK"
> ACL DRYRUN VIRGINIA GET foo
"User VIRGINIA has no permissions to run the 'get' command"
# ACL GENPASS
# 语法
ACL GENPASS [bits]
# 描述
ACL 用户需要一个高强度的密码,才能在没有安全风险的情况下对服务器进行身份验证。这种密码不需要人类记住,只需由计算机记住即可,因此它可以非常长且非常复杂。ACL GENPASS 命令会优先使用 /dev/urandom 来生成密码;如果系统不支持 /dev/urandom,则会使用一种安全性稍弱的替代机制,不过即便如此,它生成的密码大概率也比人类手动瞎编的密码要安全得多
# 参数
- bit
生成密码的熵大小,单位为比特。默认值为 256
# 示例
> ACL GENPASS
"dd721260bfe1b3d9601e7fbab36de6d04e2e67b0ef1c53de59d45950db0dd3cc"
> ACL GENPASS 32
"355ef3dd"
> ACL GENPASS 5
"90"
# ACL GETUSER
# 语法
ACL GETUSER username
# 描述
该命令会返回为现有 ACL 用户定义的所有规则
# 参数
- username
一个或多个要删除的用户名
# 示例
> ACL SETUSER sample on nopass +GET allkeys &* (+SET ~key2)
"OK"
> ACL GETUSER sample
1) "flags"
2) 1) "on"
2) "allkeys"
3) "nopass"
3) "passwords"
4) (empty array)
5) "commands"
6) "+@all"
7) "keys"
8) "~*"
9) "channels"
10) "&*"
11) "selectors"
12) 1) 1) "commands"
6) "+SET"
7) "keys"
8) "~key2"
9) "channels"
10) "&*"
# ACL LIST
# 语法
ACL LIST
# 描述
该命令会显示 Redis 服务器中当前生效的 ACL 规则。返回的数组中,每一行代表一个用户的规则定义,其格式与 redis.conf 配置文件或外部 ACL 文件中使用的格式完全相同
# 示例
> ACL LIST
1) "user antirez on #9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 ~objects:* &* +@all -@admin -@dangerous"
2) "user default on nopass ~* &* +@all"
# ACL LOAD
# 语法
ACL LOAD
# 描述
当 sudis 配置为使用 ACL 文件(通过 aclfile 配置选项)时,该命令会从文件中重新加载 ACL,并用文件中定义的规则替换掉当前所有的 ACL 规则。该命令确保了“要么全部成功,要么完全不生效”的行为,即:
- 如果文件中的每一行都是有效的,所有的 ACL 才会被加载。
- 如果文件中有一行或多行无效,则不会加载任何内容,服务器内存中将继续使用原有的 ACL 规则
# 示例
> ACL LOAD
+OK
> ACL LOAD
-ERR /tmp/foo:1: Unknown command or category name in ACL...
# ACL LOG
# 语法
ACL LOG [count | RESET]
# 描述
这个可选参数用于指定要显示的条目数量。默认情况下,最多返回 10 条失败记录。如果传入特殊的 RESET 参数,则会清空该日志
# 参数
- count | RESET
要返回的最近记录的条数,或者传入 RESET 参数来清空日志
# 示例
> AUTH someuser wrongpassword
(error) WRONGPASS invalid username-password pair
> ACL LOG 1
1) 1) "count"
2) (integer) 1
3) "reason"
4) "auth"
5) "context"
6) "toplevel"
7) "object"
8) "AUTH"
9) "username"
10) "someuser"
11) "age-seconds"
12) "8.038"
13) "client-info"
14) "id=3 addr=127.0.0.1:57275 laddr=127.0.0.1:6379 fd=8 name= age=16 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=48 qbuf-free=16842 argv-mem=25 multi-mem=0 rbs=1024 rbp=0 obl=0 oll=0 omem=0 tot-mem=18737 events=r cmd=auth user=default redir=-1 resp=2"
15) "entry-id"
16) (integer) 0
17) "timestamp-created"
18) (integer) 1675361492408
19) "timestamp-last-updated"
20) (integer) 1675361492408
# ACL SAVE
# 语法
ACL SAVE
# 描述
把内存里改好的权限配置,同步写回磁盘的配置文件里
# 示例
> ACL SAVE
+OK
> ACL SAVE
-ERR There was an error trying to save the ACLs. Please check the server logs for more information
# ACL SETUSER
# 语法
ACL SETUSER username [rule [rule ...]]
# 描述
创建具有指定规则的 ACL 用户,或修改现有用户的规则
# 参数
- username
一个或多个要删除的用户名
- rule
要应用于该用户的一条或多条 ACL规则。完整规则列表请参阅‘ACL 规则’章节
# 示例
ACL SETUSER virginia on allkeys +set
ACL SETUSER virginia +get
ACL SETUSER virginia on +GET allkeys (+SET ~app1*)
ACL SETUSER antirez reset [... other rules ...]
> ACL SETUSER antirez reset
+OK
> ACL LIST
1) "user antirez off -@all"
# ACL USERS
# 语法
ACL USERS
# 描述
该命令会显示 Redis ACL 系统中当前已配置的所有用户名列表
# 示例
> ACL USERS
1) "anna"
2) "antirez"
3) "default"
# ACL WHOAMI
# 语法
ACL WHOAMI
# 描述
返回当前连接所认证的用户名。新建立的连接默认以 "default"用户身份进行认证,之后可以通过 AUTH 命令来切换用户
# 示例
> ACL WHOAMI
"default"
# BGSAVE
# 语法
BGSAVE [SCHEDULE]
# 描述
在后台保存数据库。通常情况下,系统会立即返回 OK 状态码。随后 Redis 会 fork 出一个子进程,父进程继续响应客户端请求,而子进程则负责将数据库保存到磁盘,保存完成后退出
# 参数
- SCHEDULE
要返回的最近记录的条数,或者传入 RESET 参数来清空日志
# COMMAND COUNT
# 语法
COMMAND COUNT
# 描述
返回一个整数,表示该 Redis 服务器中命令的总数
# 示例
> COMMAND COUNT
(integer) 436
# COMMAND DOCS
# 语法
COMMAND DOCS [command-name [command-name ...]]
# 描述
返回关于命令的文档信息,默认情况下,回复会包含服务器的所有命令。你可以使用可选的 command-name 参数来指定一个或多个命令的名称
# 参数
- command
一个或多个需要查询文档的命令名称。如果省略该参数,则会返回所有命令的文档
# 示例
> COMMAND DOCS SET
1) "set"
2) 1) "summary"
2) "Sets the string value of a key, ignoring its type. The key is created if it doesn't exist."
3) "since"
4) "1.0.0"
5) "group"
6) "string"
7) "complexity"
8) "O(1)"
9) "history"
10) 1) 1) "2.6.12"
2) "Added the `EX`, `PX`, `NX` and `XX` options."
2) 1) "6.0.0"
2) "Added the `KEEPTTL` option."
3) 1) "6.2.0"
2) "Added the `GET`, `EXAT` and `PXAT` option."
4) 1) "7.0.0"
2) "Allowed the `NX` and `GET` options to be used together."
5) 1) "8.4.0"
2) "Added 'IFEQ', 'IFNE', 'IFDEQ', 'IFDNE' options."
11) "arguments"
12) 1) 1) "name"
2) "key"
3) "type"
4) "key"
5) "display_text"
6) "key"
7) "key_spec_index"
8) (integer) 0
2) 1) "name"
2) "value"
3) "type"
4) "string"
5) "display_text"
6) "value"
3) 1) "name"
2) "condition"
3) "type"
4) "oneof"
5) "since"
6) "2.6.12"
7) "flags"
8) 1) "optional"
9) "arguments"
10) 1) 1) "name"
2) "nx"
3) "type"
4) "pure-token"
5) "display_text"
6) "nx"
7) "token"
8) "NX"
2) 1) "name"
2) "xx"
3) "type"
4) "pure-token"
5) "display_text"
6) "xx"
7) "token"
8) "XX"
3) 1) "name"
2) "ifeq-value"
3) "type"
4) "string"
5) "display_text"
6) "ifeq-value"
7) "token"
8) "IFEQ"
9) "since"
10) "8.4.0"
4) 1) "name"
2) "ifne-value"
3) "type"
4) "string"
5) "display_text"
6) "ifne-value"
7) "token"
8) "IFNE"
9) "since"
10) "8.4.0"
5) 1) "name"
2) "ifdeq-digest"
3) "type"
4) "integer"
5) "display_text"
6) "ifdeq-digest"
7) "token"
8) "IFDEQ"
9) "since"
10) "8.4.0"
6) 1) "name"
2) "ifdne-digest"
3) "type"
4) "integer"
5) "display_text"
6) "ifdne-digest"
7) "token"
8) "IFDNE"
9) "since"
10) "8.4.0"
4) 1) "name"
2) "get"
3) "type"
4) "pure-token"
5) "display_text"
6) "get"
7) "token"
8) "GET"
9) "since"
10) "6.2.0"
11) "flags"
12) 1) "optional"
5) 1) "name"
2) "expiration"
3) "type"
4) "oneof"
5) "flags"
6) 1) "optional"
7) "arguments"
8) 1) 1) "name"
2) "seconds"
3) "type"
4) "integer"
5) "display_text"
6) "seconds"
7) "token"
8) "EX"
9) "since"
10) "2.6.12"
2) 1) "name"
2) "milliseconds"
3) "type"
4) "integer"
5) "display_text"
6) "milliseconds"
7) "token"
8) "PX"
9) "since"
10) "2.6.12"
3) 1) "name"
2) "unix-time-seconds"
3) "type"
4) "unix-time"
5) "display_text"
6) "unix-time-seconds"
7) "token"
8) "EXAT"
9) "since"
10) "6.2.0"
4) 1) "name"
2) "unix-time-milliseconds"
3) "type"
4) "unix-time"
5) "display_text"
6) "unix-time-milliseconds"
7) "token"
8) "PXAT"
9) "since"
10) "6.2.0"
5) 1) "name"
2) "keepttl"
3) "type"
4) "pure-token"
5) "display_text"
6) "keepttl"
7) "token"
8) "KEEPTTL"
9) "since"
10) "6.0.0"
# COMMAND
# 语法
COMMAND
# 描述
返回一个包含所有 Sudis 命令详细信息的数组
# 示例
1) 1) "get"
2) (integer) 2
3) 1) readonly
2) fast
4) (integer) 1
5) (integer) 1
6) (integer) 1
7) 1) @read
2) @string
3) @fast
8) (empty array)
9) 1) 1) "flags"
2) 1) read
3) "begin_search"
4) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 1
5) "find_keys"
6) 1) "type"
2) "range"
3) "spec"
4) 1) "lastkey"
2) (integer) 0
3) "keystep"
4) (integer) 1
5) "limit"
6) (integer) 0
10) (empty array)
...
# COMMAND GETKEYS
# 语法
COMMAND GETKEYS command [arg [arg ...]]
# 描述
COMMAND GETKEYS 是一个辅助命令,用于帮你从给定的 Redis 命令中提取出所有的键
# 参数
- command
一个或多个需要查询文档的命令名称。如果省略该参数,则会返回所有命令的文档
- arg
要传递给被测试命令的参数
# 示例
> COMMAND GETKEYS MSET a b c d e f
1) "a"
2) "c"
3) "e"
> COMMAND GETKEYS EVAL "not consulted" 3 key1 key2 key3 arg1 arg2 arg3 argN
1) "key1"
2) "key2"
3) "key3"
> COMMAND GETKEYS SORT mylist ALPHA STORE outlist
1) "mylist"
2) "outlist"
# COMMAND GETKEYSANDFLAGS
# 语法
COMMAND GETKEYSANDFLAGS command [arg [arg ...]]
# 描述
COMMAND GETKEYSANDFLAGS 是一个辅助命令,用来帮助从一条完整的 Sudis 命令中提取出所有的键,同时还会返回一些标志
# 参数
- arg
要传递给被测试命令的参数
- command
一个或多个需要查询文档的命令名称。如果省略该参数,则会返回所有命令的文档
# 示例
> COMMAND GETKEYS MSET a b c d e f
1) "a"
2) "c"
3) "e"
> COMMAND GETKEYS EVAL "not consulted" 3 key1 key2 key3 arg1 arg2 arg3 argN
1) "key1"
2) "key2"
3) "key3"
> COMMAND GETKEYSANDFLAGS LMOVE mylist1 mylist2 left left
1) 1) "mylist1"
2) 1) "RW"
2) "access"
3) "delete"
2) 1) "mylist2"
2) 1) "RW"
2) "insert"
# COMMAND INFO
# 语法
COMMAND INFO [command-name [command-name ...]] [WITHSCORES]
# 描述
返回多个Sudis命令的详细信息,格式与 COMMAND 命令相同,但你可以指定具体要查询哪些命令
# 参数
- command name
要测试的命令
# 示例
> COMMAND INFO get set eval
1) 1) "get"
2) (integer) 2
3) 1) "readonly"
2) "fast"
4) (integer) 1
5) (integer) 1
6) (integer) 1
7) 1) "@read"
2) "@string"
3) "@fast"
8) (empty array)
9) 1) 1) "flags"
2) 1) "RO"
2) "access"
3) "begin_search"
4) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 1
5) "find_keys"
6) 1) "type"
2) "range"
3) "spec"
4) 1) "lastkey"
2) (integer) 0
3) "keystep"
4) (integer) 1
5) "limit"
6) (integer) 0
10) (empty array)
2) 1) "set"
2) (integer) -3
3) 1) "write"
2) "denyoom"
4) (integer) 1
5) (integer) 1
6) (integer) 1
7) 1) "@write"
2) "@string"
3) "@slow"
8) (empty array)
9) 1) 1) "notes"
2) "RW and ACCESS due to the optional `GET` argument"
3) "flags"
4) 1) "RW"
2) "access"
3) "update"
4) "variable_flags"
5) "begin_search"
6) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 1
7) "find_keys"
8) 1) "type"
2) "range"
3) "spec"
4) 1) "lastkey"
2) (integer) 0
3) "keystep"
4) (integer) 1
5) "limit"
6) (integer) 0
10) (empty array)
3) 1) "eval"
2) (integer) -3
3) 1) "noscript"
2) "stale"
3) "skip_monitor"
4) "no_mandatory_keys"
5) "movablekeys"
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@slow"
2) "@scripting"
8) (empty array)
9) 1) 1) "notes"
2) "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE"
3) "flags"
4) 1) "RW"
2) "access"
3) "update"
5) "begin_search"
6) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 2
7) "find_keys"
8) 1) "type"
2) "keynum"
3) "spec"
4) 1) "keynumidx"
2) (integer) 0
3) "firstkey"
4) (integer) 1
5) "keystep"
6) (integer) 1
10) (empty array)
redis> COMMAND INFO foo evalsha config bar
1) (nil)
2) 1) "evalsha"
2) (integer) -3
3) 1) "noscript"
2) "stale"
3) "skip_monitor"
4) "no_mandatory_keys"
5) "movablekeys"
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@slow"
2) "@scripting"
8) (empty array)
9) 1) 1) "flags"
2) 1) "RW"
2) "access"
3) "update"
3) "begin_search"
4) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 2
5) "find_keys"
6) 1) "type"
2) "keynum"
3) "spec"
4) 1) "keynumidx"
2) (integer) 0
3) "firstkey"
4) (integer) 1
5) "keystep"
6) (integer) 1
10) (empty array)
3) 1) "config"
2) (integer) -2
3) (empty array)
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@slow"
8) (empty array)
9) (empty array)
10) 1) 1) "config|set"
2) (integer) -4
3) 1) "admin"
2) "noscript"
3) "loading"
4) "stale"
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@admin"
2) "@slow"
3) "@dangerous"
8) 1) "request_policy:all_nodes"
2) "response_policy:all_succeeded"
9) (empty array)
10) (empty array)
2) 1) "config|resetstat"
2) (integer) 2
3) 1) "admin"
2) "noscript"
3) "loading"
4) "stale"
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@admin"
2) "@slow"
3) "@dangerous"
8) 1) "request_policy:all_nodes"
2) "response_policy:all_succeeded"
9) (empty array)
10) (empty array)
3) 1) "config|rewrite"
2) (integer) 2
3) 1) "admin"
2) "noscript"
3) "loading"
4) "stale"
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@admin"
2) "@slow"
3) "@dangerous"
8) 1) "request_policy:all_nodes"
2) "response_policy:all_succeeded"
9) (empty array)
10) (empty array)
4) 1) "config|help"
2) (integer) 2
3) 1) "loading"
2) "stale"
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@slow"
8) (empty array)
9) (empty array)
10) (empty array)
5) 1) "config|get"
2) (integer) -3
3) 1) "admin"
2) "noscript"
3) "loading"
4) "stale"
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) "@admin"
2) "@slow"
3) "@dangerous"
8) (empty array)
9) (empty array)
10) (empty array)
4) (nil)
# COMMAND LIST
# 语法
COMMAND LIST [FILTERBY <MODULE module-name | ACLCAT category |
PATTERN pattern>]
# 描述
返回一个包含 Sudis 服务器所有命令名称的数组
# 参数
- FILTERBY MODULE module-name | ACLCAT category | PATTERN pattern
通过模块、ACL 类别或 glob 风格的名称模式来过滤列出的命令
# 示例
> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
(integer) 7
> ZRANGEBYLEX myzset - [c
1) "a"
2) "b"
3) "c"
> ZRANGEBYLEX myzset - (c
1) "a"
2) "b"
> ZRANGEBYLEX myzset [aaa (g
1) "b"
2) "c"
3) "d"
4) "e"
5) "f"
# CONFIG GET
# 语法
CONFIG GET parameter [parameter ...]
# 描述
CONFIG GET 命令用来读取正在运行的 Sudis 服务器的配置参数
# 示例
> config get *max-*-entries* maxmemory
1) "maxmemory"
2) "0"
3) "hash-max-listpack-entries"
4) "512"
5) "hash-max-ziplist-entries"
6) "512"
7) "set-max-intset-entries"
8) "512"
9) "zset-max-listpack-entries"
10) "128"
11) "zset-max-ziplist-entries"
12) "128"
# DBSIZE
# 语法
DBSIZE
count]
# 描述
返回当前选中数据库的键数量
# FAILOVER
# 语法
FAILOVER [TO host port [FORCE]] [ABORT] [TIMEOUT milliseconds]
# 描述
执行这个命令后,会在当前连接的主节点和它的某个副本之间发起一次协同故障转移。这个过程不是同步的,而是由一个后台任务来负责协调。它的设计初衷,就是为了在故障转移期间尽可能减少数据丢失和集群不可用的时间
# 参数
- key
保存有序集合的键名
- member
要返回其排名的成员
# 示例
> > ZADD myzset 1 "one"
(integer) 1
> ZADD myzset 2 "two"
(integer) 1
> ZADD myzset 3 "three"
(integer) 1
> ZRANK myzset "three"
(integer) 2
> ZRANK myzset "four"
(nil)
> ZRANK myzset "three" WITHSCORE
1) (integer) 2
2) "3"
> ZRANK myzset "four" WITHSCORE
(nil)
# FLUSHALL
# 语法
FLUSHALL [ASYNC | SYNC]
# 描述
删除所有现有数据库中的全部键
# 参数
- ASYNC | SYNC
以异步或同步方式执行刷新操作。默认方式由 lazyfree-lazy-user-flush 配置指令决定
# 示例
FLUSHALL SYNC
# FLUSHDB
# 语法
FLUSHDB [ASYNC | SYNC]
# 描述
删除当前所选数据库中的所有键。该命令绝不会执行失败
# 参数
- ASYNC | SYNC
以异步或同步方式执行刷新操作。默认方式由 lazyfree-lazy-user-flush 配置指令决定
# INFO
# 语法
INFO [section [section ...]]
# 描述
INFO 命令会返回关于服务器的信息和统计数据,其输出格式既便于计算机解析,又易于人类阅读
# 参数
- section
指定要在输出中包含的一个或多个信息模块
# 示例
INFO
# LASTSAVE
# 语法
LASTSAVE
# 描述
返回上一次成功执行数据库保存的 UNIX 时间戳。客户端可以通过读取 LASTSAVE 的值来检查 BGSAVE 命令是否成功:先获取当前的 LASTSAVE 值,然后发出 BGSAVE 命令,并每隔 N 秒定期检查该值是否发生了变化
# MODULE HELP
# 语法
MODULE HELP
# 描述
MODULE HELP 命令会返回一段说明文字,介绍各个子命令的用法
# ROLE
# 语法
ROLE
# 描述
该命令通过返回当前实例是主节点、从节点还是哨兵,来提供该 Redis 实例在复制机制中所扮演的角色信息
# 示例
1) "master"
2) (integer) 3129659
3) 1) 1) "127.0.0.1"
2) "9001"
3) "3129242"
2) 1) "127.0.0.1"
2) "9002"
3) "3129543"
1) "slave"
2) "127.0.0.1"
3) (integer) 9000
4) "connected"
5) (integer) 3167038
1) "sentinel"
2) 1) "resque-master"
2) "html-fragments-master"
3) "stats-master"
4) "metadata-master"
> ROLE
1) "master"
2) (integer) 0
3) (empty array)
# SAVE
# 语法
SAVE
# 描述
SAVE 命令会对数据集执行同步保存操作,生成 所有数据在某一时间点的快照,并将其保存为 RDB 文件
# SHUTDOWN
# 语法
SHUTDOWN [NOSAVE | SAVE] [NOW] [FORCE] [ABORT]
# 描述
该命令的执行行为如下:
- 如果有任何副本节点(replicas)的复制进度落后:
- 暂停尝试进行写操作的客户端(通过执行带 WRITE 选项的 CLIENT PAUSE 命令
- 等待副本节点追上复制偏移量,最长等待时间由配置的 shutdown-timeout 决定(默认 10 秒)
- 停止所有客户端的连接
- 如果配置了至少一个保存点,则执行阻塞式的 SAVE 操作
- 如果开启了 AOF,则刷新 AOF 缓冲区
- 退出服务器
# 参数
- NOSAVE | SAVE
SAVE 选项会强制执行数据库保存操作,即使没有配置任何保存点;而 NOSAVE 选项则会阻止数据库保存操作,即使配置了一个或多个保存点
- NOW
跳过对落后副本节点的等待,直接绕过关闭流程的第一步
- FORCE
忽略任何通常会阻止服务器退出的错误
- ABORT
取消正在进行的关闭操作。该选项不能与其他标志(flags)组合使用
# SLOWLOG GET
# 语法
SLOWLOG GET [count]
# 描述
SLOWLOG GET 命令会按时间先后顺序返回慢查询日志中的记录
# 参数
- count
要返回的最近慢查询日志(slow-log)条目数量。设置为 -1 会返回所有条目,默认值为 10
# SLOWLOG LEN
# 语法
SLOWLOG LEN
# 描述
该命令用于返回当前慢查询日志中的条目总数
# SLOWLOG RESET
# 语法
SLOWLOG RESET
# 描述
该命令用于重置慢查询日志,会清空其中的所有记录。一旦删除,这些信息将永久丢失,无法恢复
# SYNC
# 语法
SYNC
# 描述
从主节点启动一个复制流,用于从主节点启动数据复制流。在较新的 Redis 版本中,它已被 PSYNC 命令所取代
# TIME
# 语法
TIME
# 描述
TIME 命令会以包含两个元素的列表形式返回当前的服务器时间:一个是 Unix 时间戳,另一个是当前秒内已经过去的微秒数。基本上,它的接口与系统调用 gettimeofday 非常相似
# 示例
> TIME
1) "1783323762"
2) "925128"
redis> TIME
1) "1783323762"
2) "925861"