暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

NoSQL学习笔记--Redis命令之server操作命令

张春光的一亩三分地 2018-07-30
264

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_nameRedis里任意命令名允许多值

返回值返回命令的详细信息

实例

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 : 正在等待阻塞命令(BLPOPBRPOPBRPOPLPUSH的客户端的数量

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"

 

 


文章转载自张春光的一亩三分地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论