这篇文章,将讲述redis中与运维相关的指令。
上篇,我们讲解了redis中的集群搭建过程。现在来学习redis中的运维相关的知识。
准备工作
现在redis的目录结构如下:
redis.conf配置文件中主要的配置:
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
save 900 1
save 300 10
save 60 10000
dbfilename dump6379.rdb
dir /var/rdb
appendonly yes
appendfilename "appendonly6379.aof"
首先,删除:/var/rdb/下的所有持久化文件,为了防止干扰。
使用这个配置文件,启动redis服务器:
启动redis的客户端:
运维常用指令
time
显示redis 服务器端命令。
第一行:时间戳(秒)
第二行:微秒数
dbsize
显示当前数据库的key是数量
select
select N: 切换到N数据库下,默认16个数据库
bgrewriteaof
后台进程重写aof文件
我们知道,开启aof持久化后,必须满足一定的条件,才会执行aof重写操作,但是直接使用该命令,会立即重写aof文件。
save
save: 保存rdb快照
之前,都是当系统满足那三个save条件后,自动帮我们保存rdb快照
现在直接执行这个命令,就可以帮我们保存rdb快照了。
bgsave
bgsave: 后台保存rdb快照。
save是直接使用主进程来执行rdb保存操作,这样会阻塞当前进程。
bgsave是后台进程执行,就不会阻塞当前进程。
lastsave
上次保存快照的时间戳
flushdb
清空当前数据库中的所有数据
实际生产中,轻易不要用这个命令!!!
flushall
清空所有数据库中的数据
shutdown
showdown [save/nosave] :关闭服务器
如果不小心执行了flushall,立即 shutdown nosave , 关闭服务器
然后,手动编辑aof文件,去掉文件中的"flushall"相关的行,然后开启服务器,就可以导入回原来的数据了。
如果flushall之后 , 系统恰好bgrewriteaof了 , 那么aof就清空了 , 数据丢失.(无力回天)
slowlog
slowlog: 显示慢查询
怎样才算是一个慢执行过程呢?这是由redis.conf配置中的:slowlog-log-slower-than 10000(默认值) 来指定的
单位是:微秒。
最多能存储多少条慢查询信息呢?这是由redis.conf配置中的:slowlog-max-len 128 (默认值), 来做限制
slowlog get N :获取N条慢查询的信息
config
用来修改redis.conf配置文件中的值,是在redis运行的期间。
config get 配置项
config set 配置项 值 (特殊的选项,不允许用此命令设置,如slave-of, 需要用单独的slaveof命令来设置)
注意:
如果调用config set **** 之后,没有使用config rewrite命令的话,是不会将更改保存到redis.conf中的
只对当前允许的redis实例生效,进程结束之后就失效里。
所以如果想保存到配置文件的话,别忘了在使用config set ****之后,调用config rewrite
info
查看redis服务器信息的。
1: 内存
# Memory
used_memory:859192 数据结构的空间
used_memory_rss:7634944 实占空间
mem_fragmentation_ratio:8.89
前2者的比例,1.N为佳,如果此值过大,说明redis的内存的碎片化严重,可以导出再导入一次.
2: 主从复制
# Replication
role:slave
master_host:192.168.1.128
master_port:6379
master_link_status:up
3:持久化
# Persistence
rdb_changes_since_last_save:0
rdb_last_save_time:1375224063
4: fork耗时
#Status
latest_fork_usec:936 上次导出rdb快照,持久化花费微秒
注意: 如果某实例有10G内容,导出需要2分钟,
每分钟写入10000次,导致不断的rdb导出,磁盘始处于高IO状态.
从上图可以看出,slaves:0,没有slave服务器,所以,现在配置一个。
将当前目录下的redis.conf 复制一份为:redis6380.conf.
cp redis.conf redis6380.conf
redis.conf中的配置信息
bind 127.0.0.1 # 实际生产中,添加自己的ip地址。
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
save 900 1
save 300 10
save 60 10000
dbfilename dump6379.rdb
dir /var/rdb
appendonly yes
appendfilename "appendonly6379.aof"
redis6380.conf中的配置信息
bind 127.0.0.1 # 实际生产中,添加自己的ip地址。
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
#save 900 1 # 不要rdb,因为6379:master已经配置了。
#save 300 10
#save 60 10000
dbfilename dump6380.rdb
dir /var/rdb
appendonly no # 不要配置aof,6379:master已经配置了。
appendfilename "appendonly6380.aof"
#配置主从复制
replicaof 127.0.0.1 6379 # 配置master的ip地址和端口号。注意这里不能写localhost!!!
replica-read-only yes # slave只读。
分别启动这两个redis服务器。
./bin/redis-server ./redis.conf
./bin/redis-server ./redis6380.conf
以上主从复制配置成功,在使用info来查看信息。
在6379:redis客户端中:
在6380:redis客户端中: