Redis命令
Redis数据库命令分为:字符串strings、列表lists、集合sets、散列表hashes、有序集合sortedsets、发布订阅pub/sub、连接connection、server脚本scripting、键keys、hyperloglog、地理空间Geo、事务transaction、集群cluster一共14大类200多种命令。
官方网站:https://redis.io/commands
字符串命令
位图命令
列表命令
集合命令
散列表命令
有序集合命令
发布订阅命令
连接命令
Server操作命令
Redis数据库server操作命令,主要实现对数据库的各种管理。包括与客户端连接相关的命令,获取Redis命令相关的信息,与Redis配置文件相关的命令,与磁盘操作相关的命令,对数据库进行测试,调试等相关的命令。
客户端连接、获取命令信息相关的命令
序号 | 命令名称 | 命令功能描述 | 执行时间复杂度 |
1 | client list | 获取客户端连接信息及数量列表 | |
2 | client setname | 设置当前数据库的名称 | |
3 | client getname | 获取当前数据库的名称 | |
4 | client kill | 关闭客户端连接 | |
5 | client pause | 暂停处理客户端命令 | |
6 | command | 返回Redis所有命令 | |
7 | command count | 统计Redis命令总数 | |
8 | command getkeys | 获得指定命令的所有键 | |
9 | command info | 获得指定命令的详细使用信息 |
client list命令
语法:client list
参数说明:无
返回值:每个已连接客户端对应一行(以LF分割),每行字符串由一系列“属性=值”(property=value)形成的域组成,每个域之间以空格分开。
以下是域的含义:
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)
实例:
127.0.0.1:6379[12]> CLIENT LIST
id=6 addr=127.0.0.1:50324 fd=7 name=micky age=1928idle=0 flags=N db=12 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0omem=0 events=r cmd=client
id=7 addr=127.0.0.1:50326 fd=8 name= age=635 idle=635flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0events=r cmd=command
client setname命令
语法:clientsetname
参数说明:无
返回值:成功返回ok
实例:
127.0.0.1:6379[12]> CLIENT SETNAME micky
OK
client getname命令
语法:clientgetname
参数说明:无
返回值:如果连接没有设置名称,返回nil;设置则返回连接名称。
实例:
127.0.0.1:6379[12]> CLIENT SETNAME micky
OK
127.0.0.1:6379[12]> CLIENT GETNAME
"micky"
client kill命令
语法:CLIENT KILL ip:port
参数说明:ip是指定的客户端IP地址,port为端口号
返回值:关闭成功,返回ok
实例:
127.0.0.1:6379[12]> CLIENT KILL 127.0.0.1:50326
OK
client pause命令
语法: CLIENT PAUSE timeout
参数说明:timeout为客户端连接暂定的时间,单位毫秒
返回值:成功,返回ok;timeout设置无效,返回出错信息。
实例:(所有客户端暂停三秒)
127.0.0.1:6379[12]> CLIENT PAUSE 3000
OK
command命令
语法:command
参数说明:无
返回值:返回Redis所有命令的详细信息,以数组列表的形式显示
实例:
127.0.0.1:6379[12]> COMMAND
1) 1)"zremrangebyrank"
2)(integer) 4
3) 1)write
4)(integer) 1
5)(integer) 1
6)(integer) 1
2) 1)"role"
2)(integer) 1
3) 1)noscript
2)loading
3)stale
4)(integer) 0
5)(integer) 0
6)(integer) 0
......
179) 1) "bgrewriteaof"
2)(integer) 1
3) 1)admin
4)(integer) 0
5) (integer) 0
6)(integer) 0
180) 1) "georadiusbymember"
2)(integer) -5
3) 1) write
2)movablekeys
4)(integer) 1
5)(integer) 1
6)(integer) 1
command count命令
语法:commandcount
参数说明:无
返回值:返回Redis命令的总统计数
实例:
127.0.0.1:6379[12]> COMMAND COUNT
(integer) 180
command getkeys命令
语法:commandgetkeys
参数说明:无
返回值:返回Redis指定命令的键列表
实例:
127.0.0.1:6379[12]> COMMAND GETKEYS mset a b c d ef g h
1) "a"
2) "c"
3) "e"
4) "g"
command info命令
语法:COMMANDINFO command_name [command_name...]
参数说明:command_name为Redis里任意命令名,允许多值
返回值:返回命令的详细信息
实例:
127.0.0.1:6379[12]> COMMAND INFO command
1) 1) "command"
2) (integer)0
3) 1) loading
2) stale
4) (integer)0
5) (integer)0
6) (integer)0
127.0.0.1:6379[12]> COMMAND INFO get
1) 1) "get"
2) (integer)2
3) 1)readonly
2) fast
4) (integer)1
5) (integer) 1
6)(integer) 1
配置文件、磁盘操作相关的命令
序号 | 命令名称 | 命令功能描述 | 执行时间复杂度 |
1 | config get | 获取服务器端配置文件参数值 | |
2 | config resetstat | 复位再分配使用info命令报告的统计 | |
3 | config set | 设置配置文件指定参数的值 | |
4 | config rewrite | 重写内存中的配置文件 | |
5 | bgrewriteraof | 异步重写追加文件命令 | |
6 | bgsave | 异步保存数据集到磁盘上 | |
7 | lastsave | 获取最后一次同步磁盘的时间 | |
8 | save | 同步数据到磁盘上 |
config get命令
语法:CONFIG GET parameter
参数说明:parameter为Redis配置文件里的参数名。可以使用通配符*
返回值:返回配置文件里给定参数的键值对列表。
实例:
127.0.0.1:6379[12]> CONFIG GET requirepass
1) "requirepass"
2) "oracle"
127.0.0.1:6379[12]> CONFIG GET requir*
1) "requirepass"
2) "oracle"
127.0.0.1:6379[12]> CONFIG GET *pa*
1) "requirepass"
2) "oracle"
3) "hll-sparse-max-bytes"
4) "3000"
5) "tcp-keepalive"
6) "300"
7) "notify-keyspace-events"
8) ""
config resetstat命令
语法:CONFIG RESETSTAT
参数说明:无
返回值:ok
实例:
127.0.0.1:6379[12]> CONFIG RESETSTAT
OK
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_fsynccounter(aof_delayed_fsync 计数器的值)
config set命令
语法:CONFIG SET parameter value
参数说明:parameter为Redis配置文件里的参数名,value为参数对应的值
返回值:成功,ok;失败,返回出错信息。
实例:
127.0.0.1:6379[12]> CONFIG get slowlog-max-len
1) "slowlog-max-len"
2) "128"
127.0.0.1:6379[12]> CONFIG set slowlog-max-len1024
OK
127.0.0.1:6379[12]> CONFIG get slowlog-max-len
1) "slowlog-max-len"
2) "1024"
config rewrite命令
语法:CONFIG REWRITE
参数说明:无
返回值:成功,ok;失败,返回出错信息。
实例:
127.0.0.1:6379[12]> CONFIG get appendonly
1) "appendonly"
2) "no"
127.0.0.1:6379[12]> CONFIG set appendonly yes
OK
127.0.0.1:6379[12]> CONFIG get appendonly
1) "appendonly"
2) "yes"
127.0.0.1:6379[12]> CONFIG REWRITE
OK
bgrewriteaof命令
语法:BGREWRITEAOF
参数说明:无
返回值:ok
实例:
127.0.0.1:6379[12]> BGREWRITEAOF
Background append only file rewriting started
日志文件记录如下:
8189:M 28 Jul 18:59:59.781 * Background appendonly file rewriting started by pid 8689
8189:M 28 Jul 18:59:59.824 * AOF rewrite child asks tostop sending diffs.
8689:C 28 Jul 18:59:59.824 * Parent agreed to stopsending diffs. Finalizing AOF...
8689:C 28 Jul 18:59:59.824 * Concatenating 0.00 MB ofAOF diff received from parent.
8689:C 28 Jul 18:59:59.824 * SYNC append only filerewrite performed
8689:C 28 Jul 18:59:59.825 * AOF rewrite: 8 MB of memoryused by copy-on-write
8189:M 28 Jul 18:59:59.899 * Background AOF rewriteterminated with success
8189:M 28 Jul 18:59:59.899 * Residual parent diffsuccessfully flushed to the rewritten AOF (0.00 MB)
8189:M 28 Jul 18:59:59.899 * Background AOF rewritefinished successfully
bgsave命令
语法:BGSAVE
参数说明:无
返回值:
实例:把内存数据异步保存到磁盘文件上,返回ok
127.0.0.1:6379[12]> BGSAVE
Background saving started
日志文件记录如下:
8189:M 28 Jul 19:00:52.108 * Background savingstarted by pid 8694
8694:C 28 Jul 19:00:52.124 * DB saved on disk
8694:C 28 Jul 19:00:52.125 * RDB: 8 MB of memory usedby copy-on-write
8189:M 28 Jul 19:00:52.215 * Background savingterminated with success
lastsave命令
语法:lastsave
参数说明:无
返回值:返回Unix的时间戳
实例:
127.0.0.1:6379[12]> lastsave
(integer) 1532775652
save命令
语法:save
参数说明:无
返回值:若成功,ok
实例:
127.0.0.1:6379[12]> save
OK
日志文件记录如下:
8189:M 28 Jul 19:04:20.553 * DB saved on disk
Server其他相关的命令
序号 | 命令名称 | 命令功能描述 | 执行时间复杂度 |
1 | dbsize | 返回数据库实例里数据存储对象个数 | |
2 | debug object | 数据存储对象调试命令 | |
3 | debug segfault | 让Redis崩溃 | |
4 | flushall | 删除所有数据库里的数据 | |
5 | flushdb | 删除当前数据库的所有数据 | |
6 | info | 返回Redis服务器的各种信息和统计数值 | |
7 | monitor | 持续返回服务器端处理的每一个命令信息 | |
8 | role | 返回主从实例所属的角色 | |
9 | shudown | 异步保存数据到磁盘,并关闭服务器Redis | |
10 | slaveof | 将当前服务器转变为指定服务器的从属服务器(slave server) | |
11 | slowlog | 管理Redis的慢速记录日志 | |
12 | sync | 用于复制(replication)功能的内部命令 | |
13 | time | 返回当前服务器的时间 |
dbsize命令
语法:dbsize
参数说明:无
返回值:返回数据库实例里数据存储对象个数
实例:
127.0.0.1:6379> DBSIZE
(integer) 64
debug object命令
语法:debug object key
参数说明:key为数据存储对象名,如字符串名、列表名、集合名等
返回值:存在,返回相关信息;不存在,返回出错信息。
实例:
127.0.0.1:6379> DEBUG OBJECT zset1
Value at:0x7fc48bc28a90 refcount:1encoding:ziplist serializedlength:67 lru:6057489 lru_seconds_idle:50679
127.0.0.1:6379> DEBUG OBJECT Noone
(error) ERR no such key
debug segfault命令
语法:debug segfault
参数说明:无
返回值:无
实例:
127.0.0.1:6379> DEBUG SEGFAULT
Could not connect to Redis at 127.0.0.1:6379:Connection refused
(0.51s)
flushall命令
语法:flushall
参数说明:无
返回值:ok
实例:(删除Redis所有数据库数据,破坏力极强,在生产环境下,不要使用该命令)
127.0.0.1:6379> flushall
OK
flushdb命令
语法:flushdb
参数说明:无
返回值:ok
实例:(删除当前数据库的所有数据)
127.0.0.1:6379> flushdb
OK
info命令
语法:info[section]
参数说明:可选参数section,如果指定该参数的值,该命令值返回指定部分相关的信息
参数section ,可以让命令只返回某一部分的信息:
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 : 数据库相关的统计信息
返回值:返回文本的集合,以键值对的形式出现。
实例:
略
monitor命令
语法:monitor
参数说明:无
返回值:持续返回服务器端处理的每一个命令信息
实例:
127.0.0.1:6379> monitor
OK
1532836338.522876 [0 127.0.0.1:50424]"auth" "1qaz@wsx"
1532836346.318378 [0 127.0.0.1:50424]"info"
role命令
语法:role
参数说明:无
返回值:返回角色信息列表
127.0.0.1:6379> role
1) "master"
2) (integer) 0
3) (empty list or set)实例:
shudown命令
语法:shutdown [NOSAVE|SAVE]
参数说明:NOSAVE:内存数据不保存到硬盘;SAVE,内存数据保存到硬盘。
返回值:成功,不返回任何信息,服务器端和客户端连接断开;失败,返回错误信息
实例:
127.0.0.1:6379> shutdown
slaveof命令
语法:slaveof host port
参数说明:host指定服务器ip;port指定服务器端口。
返回值:ok
实例:
127.0.0.1:6379> slaveof 127.0.0.1 6379
OK
127.0.0.1:6379> slaveof no one //从属服务器恢复 主服务器状态
OK
slowlog命令
语法:slowlog subcommand [argument]
参数说明:subcommand为指定的操作慢速记录日志的子命令,包括:get、len、reset。get为获取指定数量的记录,通过argument参数来指定返回数量;len获取慢日志的长度;reset重置慢日志。
返回值:返回相关内容。
实例:
127.0.0.1:6379> slowlog get 2
(empty list or set)
sync命令
语法:sync
参数说明:无
返回值:不确定内容
实例:(同步主从服务器)
127.0.0.1:6379> SYNC
Entering slave output mode... (press Ctrl-C to quit)
SYNC with master, discarding 176 bytes of bulktransfer...
SYNC done. Logging commands from master.
"PING"
"PING"
"PING"
"PING"
"PING"
time命令
语法:time
参数说明:无
返回值:返回包含两个字符串的列表,第一个表示服务器的当前Unix时间戳,单位秒;第二个表示最近一秒已经过去的微妙数。
实例:
127.0.0.1:6379> time
1) "1532837355"
2) "813007"




