欢迎大家加入 459479177QQ群进行交流

    

  本章介绍Redis sever


1、sync,类似MySQL的replication

127.0.0.1:6379> sync
Entering slave output mode...  (press Ctrl-C to quit)
SYNC with master, discarding 601 bytes of bulk transfer...
SYNC done. Logging commands from master.
"PING"
"PING"

2、slowlog,管理redis慢日志

\\查看日志信息:
redis 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"
      
      
\\查看当前日志的数量:
redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 14

\\使用命令 SLOWLOG RESET 可以清空 slow log
redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 14
 
redis 127.0.0.1:6379> SLOWLOG RESET
OK
 
redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 0

3、slaveof把当前指定服务器转向指定另外的服务器

127.0.0.1:6379> slaveof 127.0.0.1 6379
OK
127.0.0.1:6379> slaveof no one        \\『 SLAVEOF NO ONE 不会丢弃同步所得数据集』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。
OK

4、shutdown异步保持数据并关闭服务

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> shutdown
not connected> ping
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

5、save异步保持数据

127.0.0.1:6379> save
OK

6、role查看当前角色

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

7、monitor实事打印当前服务的接受,调用等命令

\\开启monitor命令
127.0.0.1:6379> monitor 
OK
\\打开新的session执行命令
127.0.0.1:6379> get name
"jeery"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name tom 
QUEUED
127.0.0.1:6379> set name sunshine
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get name
"sunshine"
\\在开启monitor信息返回
127.0.0.1:6379> monitor 
OK
1475137582.021887 [0 127.0.0.1:52468] "multi"
1475137597.151760 [0 127.0.0.1:52468] "set" "name" "tom"
1475137597.151792 [0 127.0.0.1:52468] "set" "name" "sunshine"
1475137597.151800 [0 127.0.0.1:52468] "exec"
1475137602.628792 [0 127.0.0.1:52468] "get" "name"

8、lastslsave最后一数据的保存时间,以unix时间格式

127.0.0.1:6379> lastsave
(integer) 1475138167

9、info获取redis服务器的各种信息

127.0.0.1:6379> 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_rss 的值应该只比 used_memory 稍微高一点儿。
当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。
内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。
当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。
如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。
查看 used_memory_peak 的值可以验证这种情况是否发生。
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 。
persistence : RDB 和 AOF 的相关信息
stats : 一般统计信息
replication : 主/从复制信息
cpu : CPU 计算量统计信息
commandstats : Redis 命令统计信息
cluster : Redis 集群信息
keyspace : 数据库相关的统计信息

10、flushdb清楚当前库的所有key

127.0.0.1:6379> keys *
1) "pfkey"
2) "pfkey5"
3) "pfkey4"
4) "pfkey3"
5) "pfkey2"
6) "name"
7) "pfkey1"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)

11、flushall清除所有库的所有key

127.0.0.1:6379> flushall
OK

12、debug sgefault让redis崩溃用作deng调试

127.0.0.1:6379> debug segfault
Could not connect to Redis at 127.0.0.1:6379: Connection refused
(1.12s)

13、debug object获取key的调试信息

127.0.0.1:6379> debug object name
Value at:0x7f5f7b8135e0 refcount:1 encoding:embstr serializedlength:9 lru:15530812 lru_seconds_idle:6

14、dbsize获取当前库的key数量

127.0.0.1:6379> dbsize
(integer) 2
127.0.0.1:6379> keys *
1) "name"
2) "age"

15、config resetstat重启info信息

127.0.0.1:6379> config resetstat
OK
127.0.0.1:6379>

16、config set设定配置参数无需重启redis

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 256
OK
127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "256"

17、config rewrite对redis.conf进行改写

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 256
OK
127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "256"
127.0.0.1:6379> config rewrite
OK

18、config get获取指定参数的配置值

127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "256"

19、command info获取redis命令的描述数组

127.0.0.1:6379> command info zadd
1) 1) "zadd"
   2) (integer) -4
   3) 1) write
      2) denyoom
      3) fast
   4) (integer) 1
   5) (integer) 1
   6) (integer) 1
127.0.0.1:6379> command info sadd
1) 1) "sadd"
   2) (integer) -3
   3) 1) write
      2) denyoom
      3) fast
   4) (integer) 1
   5) (integer) 1
   6) (integer) 1
127.0.0.1:6379> command info info
1) 1) "info"
   2) (integer) -1
   3) 1) readonly
      2) loading
      3) stale
   4) (integer) 0
   5) (integer) 0
   6) (integer) 0

20、time返回当前服务器时间,以Unix时间戳

127.0.0.1:6379> time
1) "1475149289"
2) "806040"

21、command getkeys 获取给定所有的键

127.0.0.1:6379> COMMAND GETKEYS mset name tom age 20
1) "name"
2) "age"

22、command count获取redis有多少命令

127.0.0.1:6379> command count
(integer) 163

23、command获取所有命令详细数组

127.0.0.1:6379> command 
1) 1) "pfcount"
     2) (integer) -2
     3) 1) write
     4) (integer) 1
     5) (integer) 1
     6) (integer) 1
...            \\省略
163) 1) "zincrby"
     2) (integer) 4
     3) 1) write
        2) denyoom
        3) fast
     4) (integer) 1
     5) (integer) 1
     6) (integer) 1

24、cluster slots获取集群节点的映射数组

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

25、client setname设置当前连接名称

# 新连接默认没有名字
 
redis 127.0.0.1:6379> CLIENT GETNAME
(nil)
 
# 设置名字
 
redis 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
addr=127.0.0.1:36851
fd=5
name=hello-world-connection     # <- 名字
age=51
...
# 清除名字
redis 127.0.0.1:6379> CLIENT SETNAME        # 只用空格是不行的!
(error) ERR Syntax error, try CLIENT (LIST | KILL ip:port)
 
redis 127.0.0.1:6379> CLIENT SETNAME ""     # 必须双引号显示包围
OK
 
redis 127.0.0.1:6379> CLIENT GETNAME        # 清除完毕

26、client getname获取当前连接名称

# 新连接默认没有名字
 
redis 127.0.0.1:6379> CLIENT GETNAME
(nil)
 
# 设置名字
 
redis 127.0.0.1:6379> CLIENT SETNAME hello-world-connection
OK
 
# 返回名字
 
redis 127.0.0.1:6379> CLIENT GETNAME
"hello-world-connection"

27、client list获取连接到服务器的客户端信息

127.0.0.1:6379> client list
id=2 addr=127.0.0.1:52472 fd=6 name= age=1390 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

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)

28、client kill关闭客户端命令

id=2 addr=127.0.0.1:52472 fd=6 name= age=1390 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:52472
OK
\\仔细发下下面的端口变成了52473,说明client被关闭,而且又重新连接了服务器
127.0.0.1:6379> client list
id=3 addr=127.0.0.1:52473 fd=6 name= age=19 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

29、bgsave在后台异步保存数据到磁盘上去

127.0.0.1:6379> BGSAVE
Background saving started

30、bgrewriteaof异步执行一个aof重写操作

127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started



至此redis server命令就介绍完毕啦~下一章节我们介绍redis的主从集群等相关!



欢迎大家加入 459479177QQ群进行交流