Redis 数据库管理

 

 

1、BGREWRITEAOF 命令


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

重写会创建一个当前AOF文件的体积优化版文本。

即使命令执行失败,也不会有任何数据丢失,因为旧的AOF文件在命令成功之前不会被修改。

127.0.0.1:6379> BGREWRITEAOF -

例如,

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

2、BGSAVE 命令


定义:用于在后台异步保存当前数据库的数据到磁盘。

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

127.0.0.1:6379> BGSAVE -

例如,

127.0.0.1:6379> BGSAVE
Background saving started
127.0.0.1:6379> 

3、CLIENT KILL 命令


定义:用于关闭客户端连接。

如果使用此命令终止了当前的会话,会重新建立连接。

127.0.0.1:6379> CLIENT KILL IP:PORT

例如,

127.0.0.1:6379> CLIENT LIST
id=24 addr=127.0.0.1:41493 fd=5 name= age=70 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:41493
OK
127.0.0.1:6379> CLIENT LIST
id=25 addr=127.0.0.1:41494 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
127.0.0.1:6379> 

4、CLIENT LIST 命令


定义:用于返回所有连接到服务器的客户端信息和统计数据。

每个已连接客户端对应一行(以LF分割)。

每行字符串由一系列属性=值 形式的域组成,每个域之间以空格分开。

127.0.0.1:6379> CLIENT LIST

域的含义:

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:一个被观察的键已经被修改,EXEC命令将失败;

c:???

u:客户端未被阻塞(Unblocked)

A:快速关闭连接;

N:未设置任何标识符(Flag)

客户端Events

r:表示客户端套接字是可读的(readable)

w:表示客户端套接字是可写的(writeable)

127.0.0.1:6379> CLIENT LIST
id=25 addr=127.0.0.1:41494 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

5、CLIENT GETNAME 命令


定义:命令用于返回使用CLIENT SETNAME命令为连接设置的名字。

因为新创建的连接默认没有名称,对于没有名称的连接,该命令会返回nil。

127.0.0.1:6379> CLIENT GETNAME

例如,

127.0.0.1:6379> CLIENT GETNAME
(nil)
127.0.0.1:6379> CLIENT SETNAME RANDY
OK
127.0.0.1:6379> CLIENT GETNAME
"RANDY"

6、CLIENT SETNAME 命令


定义:命令用于指定当前连接的名称。

设置的名称会显示在CLIENT LIST命令执行结果中,用于识别当前正在与服务器连接的客户端。

127.0.0.1:6379> CLIENT SETNAME CONN-NAME

例如,

127.0.0.1:6379> CLIENT SETNAME RANDYMA
OK
127.0.0.1:6379> CLIENT LIST
id=25 addr=127.0.0.1:41494 fd=5 name=RANDYMA age=4546 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 ""
OK
127.0.0.1:6379> CLIENT SETNAME 
(error) ERR Syntax error, try CLIENT (LIST | KILL | GETNAME | SETNAME | PAUSE | REPLY)
127.0.0.1:6379> CLIENT LIST
id=25 addr=127.0.0.1:41494 fd=5 name= age=4557 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

7、CLIENT PAUSE 命令


定义:命令用于设置一个冻结时间,该时间内无法执行任何命令,单位:毫秒。

在设置时间后立即开始倒计时,倒计时结束前执行命令会挂起。

127.0.0.1:6379> CLIENT PAUSE “时间”

例如,

127.0.0.1:6379> CLIENT PAUSE 5000
OK
127.0.0.1:6379> CLIENT LIST

8、CLUSTER SLOTS 命令


定义:命令用于获取当前的集群状态,以数组形式展示。

如果没有设置集群信息,则执行命令后返回错误说明。

127.0.0.1:6379> CLUSTER SLOTS

例如,

127.0.0.1:6379> CLUSTER SLOTS
(error) ERR This instance has cluster support disabled
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命令的详细信息,以数组的形式展示。

127.0.0.1:6379> COMMAND -

例如,

171) 1) "rpushx"
     2) (integer) 3
     3) 1) write
        2) denyoom
        3) fast
     4) (integer) 1
     5) (integer) 1
     6) (integer) 1
172) 1) "smove"
     2) (integer) 4
     3) 1) write
        2) fast
     4) (integer) 1
     5) (integer) 2
     6) (integer) 1
173) 1) "zrangebylex"
     2) (integer) -4
     3) 1) readonly
     4) (integer) 1
     5) (integer) 1
     6) (integer) 1
174) 1) "multi"
     2) (integer) 1
     3) 1) noscript
        2) fast
     4) (integer) 0
     5) (integer) 0
     6) (integer) 0

10、COMMAND COUNT 命令


定义:命令用于获得该Redis版本命令的个数。

127.0.0.1:6379> COMMAND COUNT

例如,

127.0.0.1:6379> COMMAND COUNT
(integer) 174

11、COMMAND GETKEYS 命令


定义:命令用于获取所有的键。

127.0.0.1:6379> COMMAND GETKEYS

例如,

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

12、TIME 命令


定义:命令用于返回当前服务器时间。

该命令会返回字符串列表:

第一个字符串:当前时间(UNIX时间戳格式)。

第二个字符串:当前这一秒钟已经逝去的微秒数。

127.0.0.1:6379> TIME -

例如,

127.0.0.1:6379> TIME
1) "1495171931"
2) "85967"

13、COMMAND INFO command-name 命令


定义:命令用于获取Redis命令的描述信息。

127.0.0.1:6379> COMMAND INFO COMMAND-NAME [COMMAND-NAME...]

例如,

127.0.0.1:6379> COMMAND INFO GET SET EVAL CONFIG
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
4) 1) "config"
   2) (integer) -2
   3) 1) admin
      2) loading
      3) stale
   4) (integer) 0
   5) (integer) 0
   6) (integer) 0

14、CONFIG GET 命令


定义:命令用于获取Redis服务的配置参数。

在parameter部分,可以使用*表示匹配所有字符。

127.0.0.1:6379> CONFIG GET parameter

例如,

127.0.0.1:6379> CONFIG GET *max*
 1) "maxmemory"
 2) "0"
 3) "maxmemory-samples"
 4) "5"
 5) "hash-max-ziplist-entries"
 6) "512"
 7) "hash-max-ziplist-value"
 8) "64"
 9) "list-max-ziplist-size"
10) "-2"
11) "set-max-intset-entries"
12) "512"
13) "zset-max-ziplist-entries"
14) "128"
15) "zset-max-ziplist-value"
16) "64"
17) "hll-sparse-max-bytes"
18) "3000"
19) "slowlog-max-len"
20) "128"
21) "maxclients"
22) "992"
23) "min-slaves-max-lag"
24) "10"
25) "maxmemory-policy"
26) "noeviction"

15、CONFIG REWRITE 命令


定义:命令用于对启动时Redis指定的配置文件redis.conf中相应的配置进行修改。

CONFIG SET 命令用于对当前服务器的配置进行修改,但是不对配置文件中的配置进行覆盖。

CONFIG REWRTIE命令不仅修改当前的服务器配置,同时修改后的配置被记录到redis.conf文件中。

127.0.0.1:6379> CONFIG REWRITE parameter

例如,

127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "no"
127.0.0.1:6379> CONFIG SET appendonly yes
OK
127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "yes"
[redis@localhost conf]$ cat redis.conf | grep appendonly
appendonly no
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"

如果是REWRITE命令。

127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "no"
127.0.0.1:6379> CONFIG SET appendonly yes
OK
127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "yes"
127.0.0.1:6379> CONFIG REWRITE
OK
[redis@localhost conf]$ cat redis.conf | grep appendonly
appendonly yes
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"

16、CONFIG SET 命令


定义:命令用于动态地调整Redis服务器的配置,而无须重启。

修改后的配置在服务器重启后消失,并且不会被记录到redis.conf配置文件中。

127.0.0.1:6379> CONFIG SET parameter value

例如,

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 4096
OK
127.0.0.1:6379> CONFIG GET slowlog-max-len
1) "slowlog-max-len"
2) "4096"

17、CONFIG RESETSTAT 命令


定义:命令用于重置INFO命令中的某些统计数据。

127.0.0.1:6379> CONFIG RESETSTAT

例如,

127.0.0.1:6379> INFO
# Server
redis_version:3.2.8
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:97411716a4cc50c7
redis_mode:standalone
os:Linux 2.6.32-71.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.4
process_id:3517
run_id:2b126916fedddd093dc78a5ce70ddc76281874c4
tcp_port:6379
uptime_in_seconds:77096
uptime_in_days:0
hz:10
lru_clock:2001849
executable:/home/redis/redis_home/conf/redis-server
config_file:/home/redis/redis_home/conf/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:347048
used_memory_human:338.91K
used_memory_rss:7655424
used_memory_rss_human:7.30M
used_memory_peak:677727128
used_memory_peak_human:646.33M
total_system_memory:2088747008
total_system_memory_human:1.95G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:22.06
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1495156030
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:0
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:105
aof_base_size:105
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:4
instantaneous_ops_per_sec:0
total_net_input_bytes:81
total_net_output_bytes:2510
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:33.25
used_cpu_user:12.75
used_cpu_sys_children:0.54
used_cpu_user_children:3.61

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=2,expires=0,avg_ttl=0

 

18、DBSIZE 命令


定义:命令用于返回当前数据库中键的数量。

127.0.0.1:6379> DBSIZE -

例如,

127.0.0.1:6379> DBSIZE
(integer) 2
127.0.0.1:6379> SET WEEK 1
OK
127.0.0.1:6379> DBSIZE
(integer) 3

19、DEBUG OBJECT key 命令


 定义:命令用于获取键得调试信息。

127.0.0.1:6379> DEBUG OBJECT key-name

例如,

127.0.0.1:6379> DEBUG OBJECT WEEK
Value at:0x7f69c6217b80 refcount:2 encoding:int serializedlength:2 lru:1965026 lru_seconds_idle:37360

20、DEBUG SEGFAULT 命令


定义:命令执行一个非法的内存访问,从而让Redis崩溃,用于在开发阶段进行调试用。

执行后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
(10.54s)
not connected> 

 

21、FLUSHALL 命令


定义:命令用于清空整个Redis数据库中的所有数据。

127.0.0.1:6379> FLUSHALL -

例如,

127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> DBSIZE
(integer) 3
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> DBSIZE
(integer) 0

22、FLUSHDB 命令


 定义:命令用于清除当前使用数据库中的所有数据。

127.0.0.1:6379> FLUSHDB -

例如,

127.0.0.1:6379[1]> DBSIZE
(integer) 4
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> DBSIZE
(integer) 5
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> DBSIZE
(integer) 4
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> DBSIZE
(integer) 0
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> DBSIZE
(integer) 4

23、INFO 命令


定义:命令用于返回关于Redis数据库的各种信息和统计数值。

可以使用给定的参数SECTION,让命令只返回某一部分信息

127.0.0.1:6379> INFO [section]

例如,

127.0.0.1:6379> INFO
# Server
redis_version:3.2.8
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:97411716a4cc50c7
redis_mode:standalone
os:Linux 2.6.32-71.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.4
process_id:19585
run_id:4cec7080f609f7d2ecc9f53be7ddd18d84e41a9d
tcp_port:6379
uptime_in_seconds:1616
uptime_in_days:0
hz:10
lru_clock:2005230
executable:/home/redis/redis_home/conf/redis-server
config_file:/home/redis/redis_home/conf/redis.conf

# Clients
connected_clients:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:367576
used_memory_human:358.96K
used_memory_rss:7806976
used_memory_rss_human:7.45M
used_memory_peak:367576
used_memory_peak_human:358.96K
total_system_memory:2088747008
total_system_memory_human:1.95G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:21.24
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1495176139
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:534
aof_base_size:534
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:3
total_commands_processed:20
instantaneous_ops_per_sec:0
total_net_input_bytes:590
total_net_output_bytes:18095737
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:1245
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.71
used_cpu_user:0.28
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=4,expires=0,avg_ttl=0

24、LASTSAVE 命令


定义:命令用于返回最近一次Redis成功将数据保存到磁盘上的时间,以UNIX时间戳格式表示。

127.0.0.1:6379[1]> LASTSAVE -

例如,

127.0.0.1:6379[1]> LASTSAVE
(integer) 1495174985

25、MONITOR 命令


定义:命令用于实时打印出Redis服务器接收到的命令,用于调试。

127.0.0.1:6379[1]> MONITOR -

例如,

127.0.0.1:6379[1]> MONITOR
OK
1495175346.890473 [0 127.0.0.1:50721] "COMMAND"
1495175350.180135 [0 127.0.0.1:50721] "INFO"
1495175363.508557 [0 127.0.0.1:50721] "SET" "12" "12"
1495175370.270065 [0 127.0.0.1:50721] "GET" "12"

26、ROLE 命令


定义:命令用于查看复制关系中,主从实例所属的角色,MASTER、SLAVE、SENTINEL。

127.0.0.1:6379> ROLE -

例如,

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

27、SAVE 命令


定义:命令用于执行一个同步保存操作,将当前Redis实例的所有数据快照(SNAPSHOT)以RDB文件的格式保存到磁盘。

127.0.0.1:6379> SAVE -

例如,

127.0.0.1:6379> SAVE
OK

28、SHUTDOWN 命令


定义:命令用于关闭Redis数据库。

关闭Redis的顺序:

1、停止所有客户端。

2、如果存在SAVEPOINT在等待,执行SAVE操作。

3、如果AOF进行了配置,更新AOF文件。

4、关闭Redis服务器端。

127.0.0.1:6379> SHUTDOWN [NOSAVE|SAVE]

例如,

127.0.0.1:6379> SHUTDOWN SAVE
not connected> 

29、SLAVEOF 命令


定义:命令设置复制关系,将当前的数据库进程设置为指定数据库的备库(SLAVE)。

如果当前的数据库实例已经是某个主库的备库,那么执行该命令将使当前数据库实例停止对旧主库实例进行同步,丢弃旧的数据集,转而开始对新主库进行同步操作。

如果一个备库实例使用SLAVEOF NO ONE命令,则会关闭该数据库的复制功能,并从备库转变回主库,之前同步所得的数据不会丢失。

因此,可以使用此特性,在主库宕机失败的情况下,将备库转换为主库作为新的主库,从而实现服务无间断运行。

127.0.0.1:6379> SLAVEOF host port

例如,

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-log-slower-than:设定执行时间,单位是毫秒,执行时长超过该时间的命令将会被计入log。

-1表示不记录日志,0表示强制记录所有命令。

Slowlog-max-len:Slow log的长度,最小值为0。如果日志队列已超出最大长度,则最早的记录会被从队列中清除。

127.0.0.1:6379> SLOWLOG subcommand [argument]

例如,

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"

31、SYNC 命令


定义:命令用于同步主备库之间的数据。

127.0.0.1:6379> SYNC -

例如,

127.0.0.1:6379> SYNC
Entering slave output mode...  (press Ctrl-C to quit)
Error writing to master

 

posted @ 2017-05-23 15:45  大尾巴狼R  阅读(400)  评论(0编辑  收藏  举报