对Redis服务器的管理可以使用redis提供的服务命令,也可以借助一些管理软件,如:phpRedisAdmin
一、Redis服务器命令主要是用于管理redis服务
1.bgrewriteaof
异步执行一个 aof(appendonly file) 文件重写操作
2.bgsave
在后台异步保存当前数据库的数据到磁盘
3.client kill [ip:port] [id client-id]
关闭客户端连接
4.client list
获取连接到服务器的客户端连接列表
5.client getname
获取连接的名称
6.client pause timeout
在指定时间内终止运行来自客户端的命令
7.client setname connection-name
设置当前连接的名称
8.cluster slots
获取集群节点的映射数组
9.command
获取 redis 命令详情数组
10.command count
获取 redis 命令总数
11.command getkeys
获取给定命令的所有键
12.time
返回当前服务器时间
13.command info command-name [command-name ...]
获取指定 redis 命令描述的数组
14.config get parameter
获取指定配置参数的值
15.config rewrite
对启动 redis 服务器时所指定的 redis.conf 配置文件进行改写
16.config set parameter value
修改 redis 配置参数,无需重启
17.config resetstat
重置 info 命令中的某些统计数据
18.dbsize
返回当前数据库的 key 的数量
19.debug object key
获取 key 的调试信息
20.debug segfault
让 redis 服务崩溃
21.flushall
删除所有数据库的所有key
22.flushdb
删除当前数据库的所有key
23.info [section]
获取 redis 服务器的各种信息和统计数值
24.lastsave
返回最近一次 redis 成功将数据保存到磁盘上的时间,以 unix 时间戳格式表示
25.monitor
实时打印出 redis 服务器接收到的命令,调试用
26.role
返回主从实例所属的角色
27.save
异步保存数据到硬盘
28.shutdown [nosave] [save]
异步保存数据到硬盘,并关闭服务器
29.slaveof host port
将当前服务器转变为指定服务器的从属服务器(slave server)
30.slowlog subcommand [argument]
管理 redis 的慢日志
31.sync
用于复制功能(replication)的内部命令
二、备份和还原
1.redis自带的持久化
Redis提供了两种持久化选项,分别是RDB和AOF。
默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rdb一个二进制文件,这种策略被称为快照。
也可以手动调用Save或BGSAVE命令的:
./bin/redis-cli -h 192.168.100.205 -p 6379 -a pwd bgsave
快照易恢复,文件也小,但是如果遇到宕机等情况的时候快照的数据可能会不完整。此时可能需要启用另一种持久化方式AOF,在配置文件中打开[appendonly yes]。
AOF刷新日志到disk的规则:
appendfsync always #always 表示每次有写操作都进行同步,非常慢,非常安全。
appendfsync everysec #everysec表示对写操作进行累积,每秒同步一次
官方的建议的everysec,安全,就是速度不够快,如果是机器出现问题可能会丢失1秒的数据。
也可以手动执行bgrewriteaof进行AOF备份:
./bin/redis-cli -h 192.168.100.205 -p 6379 -a pwd bgrewriteaof
当采用一主(Master)多从(Slave)只做了读写分离,Master负责写入和AOF持久化,Slave负责读取。每天通过Slave做RDB备份[官方给的建议是每小时备份RDB文件,看你的策略和业务类型了],并且会用脚本将相应的备份文件推送到备份服务器。
当redis服务器挂掉时,重启时将按照以下优先级恢复数据到内存:
如果只配置AOF,重启时加载AOF文件恢复数据;
如果同时 配置了RBD和AOF,启动是只加载AOF文件恢复数据;
如果只配置RBD,启动是讲加载dump文件恢复数据。
恢复时需要注意,要是主库挂了不能直接重启主库,否则会直接覆盖掉从库的AOF文件,一定要确保要恢复的文件都正确才能启动,否则会冲掉原来的文件。
2.第三方工具
redis的备份和还原,可以借助第三方的工具redis-dump。
1)安装redis-dump
yum install ruby rubygems ruby-devel //安装rubygems 以及相关包
gem sources -a http://ruby.taobao.org/ //源,加入淘宝,外面的源不能访问
gem install redis-dump -V //安装redis-dump
2)redis-dump导出数据
# telnet 192.168.100.205 6379 //telnet到redis
Trying 192.168.100.205...
Connected to 192.168.100.205.
Escape character is '^]'.
set test 11 //设置一个值
+OK
get test //取值
$2
11
# redis-dump -u 192.168.100.205:6379 >test.json //导出数据
3)redis-dump导出数据
# telnet 192.168.100.205 6379 //telnet到redis
Trying 192.168.100.205...
Connected to 192.168.100.205.
Escape character is '^]'.
flushall //请空所有数据
+OK
keys * //查看已清空
*0
# < test.json redis-load //导入数据
# telnet 192.168.100.205 6379
Trying 192.168.100.205...
Connected to 192.168.100.205.
Escape character is '^]'.
keys * //已导入成功
*1
$4
test
三、redis安全
可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。
1.通过以下命令查看是否设置了密码验证
redis 192.168.100.205:6379> CONFIG get requirepass
1) "requirepass"
2) (nil)
默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。
2.通过以下命令来修改该参数
redis 192.168.100.205:6379> CONFIG set requirepass "admin"
OK
redis 192.168.100.205:6379> CONFIG get requirepass
1) "requirepass"
2) "admin"
设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。
3.AUTH 命令基本语法格式
redis 192.168.100.205:6379> AUTH password
如:192.168.100.205:6379> AUTH "admin"
这样验证密码ok后,就可以访问数据库了。
四、Redis管理工具之phpRedisAdmin
phpRedisAdmin是一个简单的Web界面用来管理Redis数据库。可以添加多个Server,可以用来查看、修改、删除Key及数据,也可以实现数据备份及导出。
项目地址:https://github.com/ErikDubbelboer/phpRedisAdmin
演示地址:http://dubbelboer.com/phpRedisAdmin/
参考文章:
1.MySQL数据迁移到Redis