Redis是一款内存型数据库,数据存储在内存中,这样读写数据速度非常快。但是,因为内存是易失性的,一旦Redis进程退出或机器断电,所有数据就会丢失。为了解决这个问题,Redis提供了两种持久化方式,将数据保存到磁盘上,保证数据的安全可靠。
RDB持久化方式
RDB持久化将Redis里面的数据保存在硬盘里面,形成一个快照。可以理解为Redis在某个时间点的数据副本。保存快照涉及到三个参数。
save seconds changes:在指定秒数内,如果有指定数量的数据发生变更,则执行保存快照操作。
stop-writes-on-bgsave-error yes/no:表示保存快照时redis是否停止响应所有命令。
rdbcompression yes/no:是否压缩快照文件。如果开启,会占用更多CPU资源。
RDB的优点是快照完整,文件紧凑,适合在数据比较稳定的情况下使用。缺点是RDB快照操作是阻塞Redis服务的,适合长时间备份的磁盘作为Redis保存快照的地方。
AOF持久化方式
AOF持久化可将Redis执行的每个写命令增量地追加到文件末尾,形成一种运行日志。每个命令都以Redis协议的形式保存。AOF有以下三种方式进行转储。
appendfsync always:每执行一个写命令,立即将命令内容追加到AOF文件的末尾,硬盘刷盘操作。
appendfsync everysec:每秒将执行的写命令追加到AOF文件的末尾。
appendfsync no:不主动将写命令追加到AOF文件,交给操作系统处理。
AOF的优点是能够保留所有执行的写命令,数据不会因为某些原因丢失。AOF文件可以很方便地进行备份和迁移。缺点是文件相对于RDB来说更为庞大,写入速度相对于RDB要慢一些。
结论
以上介绍了Redis持久化方式的特点,不同的方式各有优缺点,应根据实际需求进行选择。在使用RDB或者AOF时,也可以同时启动两种持久化方式进行备份,增加数据的安全性。