背景:
放假期间,测试服务器需要关闭,节后来之后重启服务器后,发现redis服务没有启动起来
排查:
查看redis日志,提示"Bad file format reading the append only file。。。。"
分析:
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。
RDB: 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。
AOF :Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
解决:
1、备份好.aof文件;
2、去bin目录下执行,./redis-check-aof --fix xx.aof
提示:
"Successfully truncated AOF",代表成功
3、重启redis服务,服务正常