我们为什么要做持久化呢?就算我们对服务器特别信任,但是我们还是避免不了天灾人祸,造成停电,线路故障,硬件故障造成我们的redis服务器存储的数据失效,所以我们要像传统数据库一样对数据进行备份,就数据存储在非易失性的介质中,保证数据的可靠性,持久性。
redis提供的持久化方案有两种:快照RDB和追加到文件AOF。
快照——简而言之,就是备份,它可以定期对数据进行备份存到硬盘中;追加到文件——就是把你所有写入redis内存的命令进行备份,存到硬盘里,以便在需要的时候重新执行这些命令就可以了。类似于我们的MySQL数据库在进行主从复制的时候,使用的是binlog二进制文件,同样的是执行一遍写命令;
快照持久化通用的配置:
save 60 1000 #在60秒内有1000次写入操作时执行快照的创建
stop-wirtes-on-bgsave-error no #创建快照失败时是否执行写入操作
rdbcompression no #是否对快照文件进行压缩
dbfilename dump.rdb #设置快照在硬盘的名称
dir ./ #设置快照的存储位置
追加到文件的通用配置:
appendonlyno #是否使用AOF配置
appendfsyncneverysec #多久执行一次将写入内容同步到硬盘上
no-appendfsyncn-on-rewrite no #对AOF进行压缩的时候是否执行同步操作。
auto-aof-rewrite-percentage100 #多久执行一次AOF压缩
auto-aof-rewrite-min-size 64mb#占多大内存的时候执行AOF压缩操作
dir ./ #AOF保存位置
但是,没我们还需要注意的是,创建快照的方式,并不能完全保证我们的数据不丢失,这个大家可以很好的理解,因为快照的创建时定时的,并不是每一次更新操作都会创建一个快照的。系统发生崩溃的时候,用户将丢失最近一次生成快照之后更改的所有数据。因此,快照持久化的方式只适合于数据不经常修改或者丢失部分数据影响不大的场景。