redis生产排查和数据恢复
redis生产会出现内存、cpu过高引起性能,一般都是连接数上去、长连接未释放,未设置ttl过期时间和大key占用过多内存,如下是redis相关生产内容:
一、业务场景正常是开启了rdb备份,关闭aof备份
开启aof备份
1、先将现有的rdb文件进行保存 cp dump.rdb /tmp
2、进入redis
redis-cli
BGREWRITEAOF 异步开启aof,将所有的数据写入到aof文件内
3、编辑conf文件、开启aof
appendonly no-》appendonly yes
4、重启redis
aof文件和rdb文件同时记录redis key操作
关闭aof备份
1、先将现有的rdb文件进行保存 cp dump.rdb /tmp
2、观察rbd文件最新更新时间是否正确
记录文件时间和大小
3、编辑conf文件、关闭aof
appendonly yes-》appendonly no
4、重启redis
对比文件大小
查看数据是否正常,存留的aof文件大小是有增长,正常是aof文件不会有增长,rdb有增长。
若出现数据问题,立刻备份
二、BGREWRITEAOF牛逼之处:
若上述未进行操作,生成的aof文件是空,但redis恢复机制,重启redis会去data目录加载数据写入内存
若开启了aof和rdb,它只会去加载aof文件的内容,aof文件未空,会让redis没有数据,出现事故
三、redis常用查询命令
切换db,默认为0,db一般为0-15
select dbid
查询当前db key数量:
dbsize
查询key可以使用通配符*,若该db key很多,禁止keys *:
keys keyname
获取values:
get keyname
获取连接数:
info clients
查看当前redis节点为master还是slave:
info replication
获取当前db所用内存:
info memory
获取指定key占用内存大小单位为byte:
memory usage keyname
手动切换slave为master:
slaveof no one
设置为某个节点的slave:
slaveof ip port
查看大key:
redis-cli -h 127.0.0.1 -p 6379 -a passwd -n dbid --bigkeys
查询热key:
redis-cli -h 127.0.0.1 -p 6379 -a passwd -n dbid --hotkeys