快照和aof的介绍:https://blog.csdn.net/weixin_38111957/article/details/82890412?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf
快照和aof优劣分析:https://www.cnblogs.com/haodaquan/p/4995581.html
快照报错解析:https://blog.csdn.net/wjs_marvin/article/details/79142091?utm_source=blogxgwz2

先说结论:
现在项目里的方案是:注释掉快照的配置,开启aof

redis持久化介绍

redis是一个支持持久化的内存数据库,也就是说redis可以将内存中的数据同步到硬盘,来实现持久化。
redis支持持久化的两种方式:
1、snapshotting(快照),这个是redis默认持久化的方式
快照是redis默认的持久化的方式,这种方式在规定的时间将内存中数据以快照的方式写入到二进制文件中,默认的文件名是:dump.rdb;可以通过配置设置自动持久化的方式,我们可以修改redis.conf文件,来配置redis在n秒如果超过m个key被修改,则自动做快照操作。
2、Append-only file,简称aof的方式
由于快照的方式有一定的间隔时间,所以如果redis在间隔时间内意外down掉后,就会丢失最后一次快照后的所有数据。
aof比快照方式有更好的持久化性,是由于在使用aof时,redis会将每一个收到的命令通过write函数追加到文件中,当redis重启后,会通过重新执行aof文件中的内容,来在内存中重建整个数据库的内容。

修改配置步骤

1、快照的方式
打开我们redis.conf的配置文件,搜索save,找到如图信息,以下也有相对应的解释。
2020-9-4 redis快照报错解决 - 图1

  1. save 900 1 #如果在900秒以内,超过1个key被修改,则发起快照保存
  2. save 300 10 #如果在300秒内,超过10个key被修改,则发起快照保存
  3. save 60 10000 #如果在60秒以内,超过10000个key被修改,则发起快照保存
  4. 项目中把快照的配置注释了

2、aof的方式
步骤一**:打开redis.conf配置文件,找到appendonly,默认是no,改成yes,yes则代表开启aof持久化
2020-9-4 redis快照报错解决 - 图2
步骤二**:找到appendfsync,支持三种方式
2020-9-4 redis快照报错解决 - 图3

  1. 1. #appendfsync always #收到命令就立即写入磁盘,最慢,但是保证完全的持久化
  2. 2. appendfsync everysec #每一秒钟写入磁盘一次,在性能和持久化方便做了很好的调整
  3. 3. appendfsync no #完全依赖os,性能最好,持久化没保证

步骤三:重启redis即可,执行命令后,查看文件会有appendnoly.aof文件,记录着操作的命令
2020-9-4 redis快照报错解决 - 图4