Redis 服务器命令主要是用于管理 redis 服务。
实例
以下实例演示了如何获取 redis 服务器的统计信息:
redis 127.0.0.1:6379> INFO
# Server
redis_version:3.2.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:4d2050541c69b013
redis_mode:standalone
os:Linux 2.6.32-573.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:2330
run_id:955613d3ad935f3dee07156fab4ec98a2f1d40a5
tcp_port:6379
uptime_in_seconds:554
uptime_in_days:0
hz:10
lru_clock:618066
executable:/home/gp6/redis/redis-3.2.6/src/./redis-server
config_file:/home/gp6/redis/myRedis/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:822688
used_memory_human:803.41K
used_memory_rss:7782400
used_memory_rss_human:7.42M
used_memory_peak:822688
used_memory_peak_human:803.41K
total_system_memory:1967984640
total_system_memory_human:1.83G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.46
mem_allocator:jemalloc-4.0.3
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1510566952
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
# Stats
total_connections_received:1
total_commands_processed:1
instantaneous_ops_per_sec:0
total_net_input_bytes:31
total_net_output_bytes:5916769
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:1.05
used_cpu_user:2.37
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
Redis 服务器命令
下表列出了 redis 服务器的相关命令:
-
1 Bgrewriteaof
Redis Bgrewriteaof 命令用于异步执行一个 AOF(AppendOnly File) 文件重写操作。重写会创建一个当前 AOF 文件的体积优化版本。
即使 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改。
注意:从 Redis 2.4 开始, AOF 重写由 Redis 自行触发, BGREWRITEAOF 仅仅用于手动触发重写操作。
# 语法
redis 127.0.0.1:6379> BGREWRITEAOF
# 返回值
反馈信息。
# 实例
127.0.0.1:6379> BGREWRITEAOF
Background append only file rewriting started
-
2 Bgsave
Redis Bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
# 语法
redis 127.0.0.1:6379> BGSAVE
# 返回值
反馈信息。
# 实例
127.0.0.1:6379> BGSAVE
Background saving started
-
3 Client Kill
Redis Client Kill 命令用于关闭客户端连接。
# 语法
redis 127.0.0.1:6379> CLIENT KILL ip:port
# 返回值
成功关闭时,返回 OK 。
# 实例
# 列出所有已连接客户端
127.0.0.1:6379> CLIENT LIST
id=2 addr=127.0.0.1:44143 fd=5 name= age=1099 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
# 杀死当前客户端的连接
127.0.0.1:6379> CLIENT KILL 127.0.0.1:44143
OK
# 之前的连接已经被关闭,CLI 客户端又重新建立了连接
# 之前的端口是 44143 ,现在是 44144
127.0.0.1:6379> CLIENT LIST
id=3 addr=127.0.0.1:44144 fd=5 name= 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
-
4 Client Getname
Redis Client Getname 命令用于返回 CLIENT SETNAME 命令为连接设置的名字。 因为新创建的连接默认是没有名字的, 对于没有名字的连接, CLIENT GETNAME 返回空白回复。
# 语法
redis 127.0.0.1:6379> CLIENT GETNAME
# 返回值
如果连接没有设置名字,那么返回空白回复; 如果有设置名字,那么返回名字。
# 实例
# 新连接默认没有名字
127.0.0.1:6379> CLIENT GETNAME
(nil)
# 设置名字
127.0.0.1:6379> CLIENT SETNAME hello-world-connection
OK
# 返回名字
127.0.0.1:6379> CLIENT GETNAME
"hello-world-connection"
-
5 Client List
Redis Client List 命令用于返回所有连接到服务器的客户端信息和统计数据。
# 语法
redis 127.0.0.1:6379> CLIENT LIST
# 返回值
命令返回多行字符串,这些字符串按以下形式被格式化:
每个已连接客户端对应一行(以 LF 分割)
每行字符串由一系列 属性=值 形式的域组成,每个域之间以空格分开
以下是域的含义:
addr : 客户端的地址和端口
fd : 套接字所使用的文件描述符
age : 以秒计算的已连接时长
idle : 以秒计算的空闲时长
flags : 客户端 flag
db : 该客户端正在使用的数据库 ID
sub : 已订阅频道的数量
psub : 已订阅模式的数量
multi : 在事务中被执行的命令数量
qbuf : 查询缓冲区的长度(字节为单位, 0 表示没有分配查询缓冲区)
qbuf-free : 查询缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
obl : 输出缓冲区的长度(字节为单位, 0 表示没有分配输出缓冲区)
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)
# 实例
redis 127.0.0.1:6379> CLIENT LIST
id=3 addr=127.0.0.1:44144 fd=5 name=hello-world-connection age=527 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
-
6 Client Pause
Redis Client Pause 命令用于阻塞客户端命令一段时间(以毫秒计)。。
# 语法
redis 127.0.0.1:6379> CLIENT PAUSE timeout
# 返回值
返回 OK。如果 timeout 参数是非法的返回错误。
# 实例
127.0.0.1:6379> CLIENT PAUSE
(error) ERR Syntax error, try CLIENT (LIST | KILL | GETNAME | SETNAME | PAUSE | REPLY)
127.0.0.1:6379> CLIENT PAUSE 1000
OK
-
7 Client Setname
Redis Client Setname 命令用于指定当前连接的名称。
这个名字会显示在 CLIENT LIST 命令的结果中, 用于识别当前正在与服务器进行连接的客户端。
# 语法
redis 127.0.0.1:6379> CLIENT SETNAME connection-name
# 返回值
设置成功时返回 OK 。
# 实例
# 新连接默认没有名字
127.0.0.1:6379> CLIENT GETNAME
(nil)
# 设置名字
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
id=3 addr=127.0.0.1:44144 fd=5
name=hello-world-connection # <- 名字
age=865 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
# 清除名字
127.0.0.1:6379> CLIENT SETNAME # 只用空格是不行的!
(error) ERR Syntax error, try CLIENT (LIST | KILL ip:port)
127.0.0.1:6379> CLIENT SETNAME "" # 必须双引号显示包围
OK
127.0.0.1:6379> CLIENT GETNAME # 清除完毕
(nil)
-
8 Cluster Slots
Redis Client Slots 命令用于当前的集群状态,以数组形式展示。
# 语法
redis 127.0.0.1:6379> CLUSTER SLOTS
# 返回值
IP/端口嵌套的列表数组。
# 实例
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
-
9 COMMAND
Redis Command 命令用于返回所有的Redis命令的详细信息,以数组形式展示。
# 语法
redis 127.0.0.1:6379> COMMAND
# 返回值
嵌套的Redis命令的详细信息列表。列表顺序是随机的。
# 实例
127.0.0.1:6379> COMMAND
#内容过多 ,只截取一部分
......
23) 1) "zrank"
2) (integer) 3
3) 1) readonly
2) fast
4) (integer) 1
5) (integer) 1
6) (integer) 1
24) 1) "readwrite"
2) (integer) 1
3) 1) fast
4) (integer) 0
5) (integer) 0
6) (integer) 0
25) 1) "zrange"
2) (integer) -4
3) 1) readonly
4) (integer) 1
5) (integer) 1
6) (integer) 1
26) 1) "hlen"
2) (integer) 2
3) 1) readonly
2) fast
4) (integer) 1
5) (integer) 1
6) (integer) 1
27) 1) "rpushx"
2) (integer) 3
3) 1) write
2) denyoom
3) fast
4) (integer) 1
5) (integer) 1
6) (integer) 1
28) 1) "randomkey"
2) (integer) 1
3) 1) readonly
2) random
4) (integer) 0
5) (integer) 0
6) (integer) 0
29) 1) "set"
2) (integer) -3
3) 1) write
2) denyoom
4) (integer) 1
5) (integer) 1
6) (integer) 1
......
-
10 Command Count
Redis Command Count 命令用于统计 redis 命令的个数。
# 语法
redis 127.0.0.1:6379> COMMAND COUNT
# 返回值
redis 命令数。
# 实例
127.0.0.1:6379> COMMAND COUNT
(integer) 172
-
11 Command Getkeys
Redis Command Getkeys 命令用于获取所有 key。
# 语法
redis 127.0.0.1:6379> COMMAND GETKEYS
# 返回值
key 的列表。
# 实例
redis 127.0.0.1:6379> COMMAND GETKEYS MSET a b c d e f
1) "a"
2) "c"
3) "e"
-
12 Time
Redis Time 命令用于返回当前服务器时间
# 语法
redis 127.0.0.1:6379> TIME
# 返回值
一个包含两个字符串的列表: 第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数
# 实例
127.0.0.1:6379> TIME
1) "1510580904"
2) "337524"
-
13 Command Info
Redis Command Info 命令用于获取 redis 命令的描述信息。
# 语法
redis 127.0.0.1:6379> COMMAND INFO command-name [command-name ...]
# 返回值
命令描述信息的嵌套列表。
# 实例
127.0.0.1:6379> 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
2) 1) "set"
2) (integer) -3
3) 1) write
2) denyoom
4) (integer) 1
5) (integer) 1
6) (integer) 1
3) 1) "eval"
2) (integer) -3
3) 1) noscript
2) movablekeys
4) (integer) 0
5) (integer) 0
6) (integer) 0
-
14 Config Get
Redis Config Get 命令用于获取 redis 服务的配置参数。
在 Redis 2.4 版本中, 有部分参数没有办法用 CONFIG GET 访问,但是在最新的 Redis 2.6 版本中,所有配置参数都已经可以用 CONFIG GET 访问了。
# 语法
redis 127.0.0.1:6379> CONFIG GET parameter
# 返回值
给定配置参数的值。
# 实例
127.0.0.1:6379> config get *max-*-entries*
1) "hash-max-ziplist-entries"
2) "512"
3) "set-max-intset-entries"
4) "512"
5) "zset-max-ziplist-entries"
6) "128"
-
15 Config rewrite
Redis Config rewrite 命令对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写。
CONFIG SET 命令可以对服务器的当前配置进行修改, 而修改后的配置可能和 redis.conf 文件中所描述的配置不一样, CONFIG REWRITE 的作用就是通过尽可能少的修改, 将服务器当前所使用的配置记录到 redis.conf 文件中。
# 语法
redis 127.0.0.1:6379> CONFIG REWRITE parameter
# 返回值
一个状态值:如果配置重写成功则返回 OK ,失败则返回一个错误。
# 实例
以下是执行 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
# ... 其他选项
-
16 Config Set
Redis Config Set 命令可以动态地调整 Redis 服务器的配置(configuration)而无须重启。
你可以使用它修改配置参数,或者改变 Redis 的持久化(Persistence)方式。
# 语法
redis 127.0.0.1:6379> CONFIG Set parameter value
# 返回值
当设置成功时返回 OK ,否则返回一个错误。
# 实例
127.0.0.1:6379> CONFIG GET slowlog-max-len
1) "slowlog-max-len"
2) "128"
127.0.0.1:6379> CONFIG SET slowlog-max-len 10086
OK
127.0.0.1:6379> CONFIG GET slowlog-max-len
1) "slowlog-max-len"
2) "10086"
-
17 Dbsize
Redis Dbsize 命令用于返回当前数据库的 key 的数量。
# 语法
redis 127.0.0.1:6379> DBSIZE
# 返回值
当前数据库的 key 的数量。
# 实例
127.0.0.1:6379> DBSIZE
(integer) 0
127.0.0.1:6379> SET new_key "hello_moto" # 增加一个 key 试试
OK
127.0.0.1:6379> DBSIZE
(integer) 1
-
18 Config Resetstat
Redis 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 计数器的值)
# 语法
redis 127.0.0.1:6379> CONFIG RESETSTAT
# 返回值
总是返回 OK 。
# 实例
127.0.0.1:6379> INFO
# Server
redis_version:3.2.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:4d2050541c69b013
redis_mode:standalone
os:Linux 2.6.32-573.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:2330
run_id:955613d3ad935f3dee07156fab4ec98a2f1d40a5
tcp_port:6379
uptime_in_seconds:15816
uptime_in_days:0
hz:10
lru_clock:633328
executable:/home/gp6/redis/redis-3.2.6/src/./redis-server
config_file:/home/gp6/redis/myRedis/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:822256
used_memory_human:802.98K
used_memory_rss:7868416
used_memory_rss_human:7.50M
used_memory_peak:822688
used_memory_peak_human:803.41K
total_system_memory:1967984640
total_system_memory_human:1.83G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.57
mem_allocator:jemalloc-4.0.3
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1510582644
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:137
aof_base_size:71
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
# Stats
total_connections_received:2
total_commands_processed:39
instantaneous_ops_per_sec:0
total_net_input_bytes:1302
total_net_output_bytes:11790594
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:62033
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:27.51
used_cpu_user:66.81
used_cpu_sys_children:0.62
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
#执行重置命令
127.0.0.1:6379> CONFIG RESETSTAT
OK
#重置后查看 INFO 命令输出信息
127.0.0.1:6379> INFO
# Server
redis_version:3.2.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:4d2050541c69b013
redis_mode:standalone
os:Linux 2.6.32-573.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:2330
run_id:955613d3ad935f3dee07156fab4ec98a2f1d40a5
tcp_port:6379
uptime_in_seconds:15994
uptime_in_days:0
hz:10
lru_clock:633506
executable:/home/gp6/redis/redis-3.2.6/src/./redis-server
config_file:/home/gp6/redis/myRedis/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:822256
used_memory_human:802.98K
used_memory_rss:7868416
used_memory_rss_human:7.50M
used_memory_peak:822688
used_memory_peak_human:803.41K
total_system_memory:1967984640
total_system_memory_human:1.83G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.57
mem_allocator:jemalloc-4.0.3
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1510582644
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:137
aof_base_size:71
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
# Stats
total_connections_received:0
total_commands_processed:1
instantaneous_ops_per_sec:0
total_net_input_bytes:14
total_net_output_bytes:5
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:27.73
used_cpu_user:67.70
used_cpu_sys_children:0.62
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
-
19 Debug Object
Redis Debug Object 命令是一个调试命令,它不应被客户端所使用。
# 语法
redis 127.0.0.1:6379> DEBUG OBJECT key
# 返回值
当 key 存在时,返回有关信息。 当 key 不存在时,返回一个错误。
# 实例
127.0.0.1:6379> DEBUG OBJECT new_key
Value at:0x7f7a08e1b940 refcount:1 encoding:embstr serializedlength:11 lru:633204 lru_seconds_idle:664
127.0.0.1:6379> DEBUG OBJECT mykey
(error) ERR no such key
-
20 Debug Segfault
Redis Debug Segfault 命令执行一个非法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 调试。
# 语法
redis 127.0.0.1:6379> DEBUG SEGFAULT
# 返回值
无
# 实例
127.0.0.1:6379> DEBUG SEGFAULT
Could not connect to Redis at 127.0.0.1:6379: Connection refused
(1.13s)
-
21 Flushall
Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。
# 语法
redis 127.0.0.1:6379> FLUSHALL
# 返回值
总是返回 OK
# 实例
127.0.0.1:6379> DBSIZE # 0 号数据库的 key 数量
(integer) 9
127.0.0.1:6379> SELECT 1 # 切换到 1 号数据库
OK
127.0.0.1:6379> DBSIZE # 1 号数据库的 key 数量
(integer) 6
127.0.0.1:6379> flushall # 清空所有数据库的所有 key
OK
127.0.0.1:6379> DBSIZE # 不但 1 号数据库被清空了
(integer) 0
127.0.0.1:6379> SELECT 0 # 0 号数据库(以及其他所有数据库)也一样
OK
127.0.0.1:6379> DBSIZE
(integer) 0
-
22 Flushdb
Redis Flushdb 命令用于清空当前数据库中的所有 key。
# 语法
redis 127.0.0.1:6379> FLUSHDB
# 返回值
总是返回 OK 。
# 实例
127.0.0.1:6379> DBSIZE # 清空前的 key 数量
(integer) 4
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> DBSIZE # 清空后的 key 数量
(integer) 0
-
23 Info
server : 一般 Redis 服务器信息,包含以下域:
redis_version : Redis 服务器版本
redis_git_sha1 : Git SHA1
redis_git_dirty : Git dirty flag
os : Redis 服务器的宿主操作系统
arch_bits : 架构(32 或 64 位)
multiplexing_api : Redis 所使用的事件处理机制
gcc_version : 编译 Redis 时所使用的 GCC 版本
process_id : 服务器进程的 PID
run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)
tcp_port : TCP/IP 监听端口
uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数
uptime_in_days : 自 Redis 服务器启动以来,经过的天数
lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理
clients : 已连接客户端信息,包含以下域:
connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
client_longest_output_list : 当前连接的客户端当中,最长的输出列表
client_longest_input_buf : 当前连接的客户端当中,最大输入缓存
blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
memory : 内存信息,包含以下域:
used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位
used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量
used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
used_memory_peak : Redis 的内存消耗峰值(以字节为单位)
used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值
used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位)
mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率
mem_allocator : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。
当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。
内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。
当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。
如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。
查看 used_memory_peak 的值可以验证这种情况是否发生。
persistence : RDB 和 AOF 的相关信息
stats : 一般统计信息
replication : 主/从复制信息
cpu : CPU 计算量统计信息
commandstats : Redis 命令统计信息
cluster : Redis 集群信息
keyspace : 数据库相关的统计信息
# 语法
redis 127.0.0.1:6379> INFO [section]
# 返回值
字符串,文本行的集合。
# 实例
127.0.0.1:6379> INFO
# Server
redis_version:3.2.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:4d2050541c69b013
redis_mode:standalone
os:Linux 2.6.32-573.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:4913
run_id:430a44294052a07f5c81c6e376c9038e482a5088
tcp_port:6379
uptime_in_seconds:480
uptime_in_days:0
hz:10
lru_clock:634699
executable:/home/gp6/redis/redis-3.2.6/src/./redis-server
config_file:/home/gp6/redis/myRedis/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:822656
used_memory_human:803.38K
used_memory_rss:7782400
used_memory_rss_human:7.42M
used_memory_peak:822656
used_memory_peak_human:803.38K
total_system_memory:1967984640
total_system_memory_human:1.83G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.46
mem_allocator:jemalloc-4.0.3
# Persistence
loading:0
rdb_changes_since_last_save:2
rdb_bgsave_in_progress:0
rdb_last_save_time:1510583659
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:137
aof_base_size:137
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
# Stats
total_connections_received:1
total_commands_processed:2
instantaneous_ops_per_sec:0
total_net_input_bytes:47
total_net_output_bytes:5888263
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:0.94
used_cpu_user:2.05
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
-
24 Lastsave
Redis Lastsave 命令返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。
# 语法
redis 127.0.0.1:6379> LASTSAVE
# 返回值
字符串,文本行的集合。
# 实例
127.0.0.1:6379> LASTSAVE
(integer) 1510583659
-
25 Monitor
Redis Monitor 命令用于实时打印出 Redis 服务器接收到的命令,调试用。
# 语法
redis 127.0.0.1:6379> MONITOR
# 返回值
总是返回 OK 。
# 实例
127.0.0.1:6379> MONITOR
OK
#打开另一个客户端,输入命令
127.0.0.1:6379> keys *
1) "new_key"
#此时,原来的窗口出现输入的命令
1510584488.966928 [0 127.0.0.1:44149] "COMMAND"
1510584494.538387 [0 127.0.0.1:44149] "keys" "*"
-
26 Role
Redis Role 命令查看主从实例所属的角色,角色有master, slave, sentinel。
# 语法
redis 127.0.0.1:6379> ROLE
# 返回值
返回一个数组:第一个参数是 master, slave, sentinel 三个中的一个
# 实例
127.0.0.1:6379> ROLE
1) "master"
2) (integer) 0
3) (empty list or set)
-
27 Save
Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。
# 语法
redis 127.0.0.1:6379> SAVE
# 返回值
保存成功时返回 OK 。。
# 实例
127.0.0.1:6379> SAVE
OK
-
28 Shutdown
Redis Shutdown 命令执行以下操作:
停止所有客户端
如果有至少一个保存点在等待,执行 SAVE 命令
如果 AOF 选项被打开,更新 AOF 文件
关闭 redis 服务器(server)
# 语法
redis 127.0.0.1:6379> SHUTDOWN [NOSAVE] [SAVE]
# 返回值
执行失败时返回错误。 执行成功时不返回任何信息,服务器和客户端的连接断开,客户端自动退出。
# 实例
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SHUTDOWN
not connected>
-
29 Slaveof
Redis Slaveof 命令可以将当前服务器转变为指定服务器的从属服务器(slave server)。
如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port 将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。
另外,对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。
利用『 SLAVEOF NO ONE 不会丢弃同步所得数据集』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。
# 语法
redis 127.0.0.1:6379> SLAVEOF host port
# 返回值
总是返回 OK
# 实例
127.0.0.1:6379> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6379> SLAVEOF NO ONE
OK
-
30 slowlog
Redis slowlog 是 Redis 用来记录查询执行时间的日志系统。
查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。
另外,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。
# 语法
redis 127.0.0.1:6379> SLOWLOG subcommand [argument]
# 返回值
取决于不同命令,返回不同的值。
# 实例
#查看日志信息
127.0.0.1:6379> slowlog get 2
(empty list or set)
#查看当前日志的数量:
127.0.0.1:6379> SLOWLOG LEN
(integer) 0
#使用命令 SLOWLOG RESET 可以清空 slow log 。
127.0.0.1:6379> SLOWLOG LEN
(integer) 14
127.0.0.1:6379> SLOWLOG RESET
OK
127.0.0.1:6379> SLOWLOG LEN
(integer) 0
-
31 Sync
Redis Sync 命令用于同步主从服务器。
# 语法
redis 127.0.0.1:6379> SYNC
# 返回值
不明确。
# 实例
127.0.0.1:6379> SYNC
Entering slave output mode... (press Ctrl-C to quit)
SYNC with master, discarding 131 bytes of bulk transfer...
SYNC done. Logging commands from master.
"PING"