NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
> ~~~ > 因为rdb有可能会导致几分钟的缓存失效,所以就诞生了aof缓存,和rdb不同的是他生成的log日志形式的缓存, > 吧用户的所有命令都记录下来。可以设置保存间隔,一般为1分钟,也可以没一次命令都保存一次,aof是向磁盘写, > 所以会占用一定的资源,所以建议,使用每分钟一次的缓存。aof和rdb配合使用是最合适的。 > > ~~~ ## `优势`: ~~~ 就算数据丢失,也只会丢失1分钟的数据,是可以接受的。 ~~~ ## `劣势`: ~~~ 会占用一定的磁盘,影响redis读写效率。 ~~~ ## `配置`: ~~~ 开启aof日志持久化 appendonly yes 保存文件的地址 appendfilename "appendonly.aof" 保存规则: appendfsync everysec|always|no everysec => '没1秒写一次' always => '每一个命令,都立即同步到缓存aof文件中,安全性高,速度慢' no=>'吧工作交给系统来决定,什么时候写入,同步率低,速度快' 是否在执行保存rdb的时候禁止aof持久化, no-appendfsync-on-rewrite yes #没有必要重复保存,可以再rdb保存好后从他里面取 重写规则增长100%就重写,白话文:只要有数据写入就重写。 auto-aof-rewrite-percentage 100 当aof文件达到多大的时候发生重写 auto-aof-rewrite-min-size 64mb 重写:因为记录的是操作的指令,那么就会产生同一个数据,100次自增命令过后从1变为101, 那我只需要保存最后一次操作就可次,这就是重写,保存最后一次操作,删除其他该数据的操作。 从而及大幅度的减小数据的大小。 ~~~ ## 问题: ~~~ (1)如果dump rdb的时候停止aof同步,aof会不会丢失数据? 答:不会的,所有操作都是在内存的队列里,dump完成后统一操作,再向aof中导入。 (2)如果rdb和aof同时存在,优先使用那个缓存。 答:aof。 这也是当我们开启aof后直接重启redis服务,导致aof缓存中为空,在进入redis后数据也为空的原因。 (3)恢复数据 rdb和aof 谁快? 答:rdb快,rdb是快照,可以直接载入内存,aof是命令需要逐条执行。 ~~~