一,为什么要进行持久化
redis是一个内存数据库,顾名思义所有的数据刚在未进行持久化之前都是存储在内存上,当服务器发生故障或者断电时就可能会造成数据的丢失,造成损失,持久化就是将redis数据库的数据写入磁盘。
二,redis持久化分类
1. rdb(快照)方式
rdb方式也称为快照方式也是redis数据库默认的一种持久化方式,就是在规定的时间内将数据库中的数据以快照的方式写入磁盘的二进制文件(dump.rdb)中,我们可以设置在n秒内如果有写入或者修改了m个key就做一次rdb方式的持久化。
打开redis.conf文件
save 900 1 #900秒内如果有1个key被修改就持久化一次
save 300 10 #300秒内如果有10个key被修改就持久化一次
save 60 10000 #60秒内如果有10000个key被修改就持久化一次
优点:可以提高效率。
缺点:不能完整的持久化,可能某次故障造成数据的丢失。
2. aof(append-only-file)方式
aof追加的方式,有更好的持久化,可以做到每次接收到一个修改命令时都会将这个命令以日志的方式追加到appendonly.aof中,当下次启动redis时,会执行aof文件中的命令重建数据库中的数据。
配置方式
将redis.conf中的
appendonly no 改为 appendonly yes
aof有三种策略持久化:
- # appendfsync always #每进行一次修改写入一次 可以做到完整的持久化 但是效率最低。
- # appendfsync everysec #每秒钟写入一次
- # appendfsync no #完全依赖于os 持久化没保证
对于对数据要求比较高的我们建议使用第一种方式。