20 Redis 服务器

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"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,573评论 18 139
  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 3,956评论 2 27
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,028评论 1 51
  • Redis 配置文件示例 注意:想要读取配置文件,Redis的第一个参数必须是文件的路径 ./redis-serv...
    起个名忒难阅读 1,188评论 0 1
  • Redis 服务器 Redis 服务器命令主要是用于管理 redis 服务。 实例 以下实例演示了如何获取 red...
    stakeing阅读 263评论 0 1