1.Redis持久化机制有哪些?
参考
Redis提供了两种主要的持久化机制:RDB持久化和AOF持久化。此外,还可以采用混合持久化(RDB + AOF)的方式,将这两种持久化方式结合在一起。
1 RDB持久化
RDB(Redis DataBase)持久化是一种基于快照的持久化方式。在指定的时间间隔内,如果满足一定条件(如某段时间内发生的写操作次数),Redis会生成一个包含当前内存数据的RDB文件。这个RDB文件可以用于数据恢复或备份。RDB持久化提供了较高的数据压缩率和快速的数据加载速度,但可能存在一定程度的数据丢失。
2 AOF持久化
AOF(Append Only File)持久化是一种基于日志的持久化方式。Redis将所有的写操作命令记录到一个AOF文件中。当Redis重新启动时,可以通过重放AOF文件中的命令来恢复数据。AOF持久化提供了更高的数据安全性,可以保证数据的完整性。然而,与RDB持久化相比,AOF文件通常较大,数据加载速度较慢。
3 混合持久化(RDB + AOF)
混合持久化结合了RDB持久化和AOF持久化的优点,可以在保证数据安全性的同时,提供较快的数据加载速度。在这种持久化方式下,Redis会同时生成RDB文件和AOF文件。当Redis重新启动时,优先使用AOF文件恢复数据,以确保数据的完整性。混合持久化适用于对数据安全性和性能要求较高的场景。
RDB持久化触发方式
RDB持久化可以通过以下几种方式触发:
1.手动触发:使用SAVE或BGSAVE命令。SAVE是同步命令,执行过程中会阻塞其他请求。BGSAVE是异步命令,主进程会forks一个子进程,进行异步持久化,持久化过程中主进程仍然可以处理其他请求。
900s内至少有一次写操作
save 900 1
2.关闭Redis时触发:Redis在关闭服务时会自动触发一次RDB持久化。
3.主从同步时触发:当从节点连接到主节点时,主节点会触发一次RDB持久化,并将生成的RDB文件发送给从节点进行同步。
AOF持久化的配置主要包括以下几个方面:
启用AOF持久化:在配置文件中设置appendonly yes。
AOF文件同步策略:在配置文件中设置appendfsync选项。可选值包括:
always:每次写操作都同步到磁盘,保证最高的数据安全性,但性能较差。
everysec:每秒同步一次磁盘,提供较好的数据安全性和性能平衡。
no:由操作系统决定何时同步磁盘,性能最好,但数据安全性较差。