文章目录
- Redis持久化:RDB与AOF
-
- [一、RDB 持久化](#一、RDB 持久化)
- [二、AOF 持久化](#二、AOF 持久化)
Redis持久化:RDB与AOF
Redis的持久化功能可以将内存中的数据保存在磁盘上,防止服务器故障导致数据丢失。Redis提供了两种持久化方式:RDB(Redis DataBase)和 AOF(Append Only File)。以下是这两种持久化方法的详细解释。
一、RDB 持久化
RDB持久化方式是通过创建数据的快照来实现的。在指定的时间间隔内,如果满足一定的写操作数量,Redis就会自动触发RDB持久化操作,将当前所有数据写入到一个dump.rdb的文件中。
例如,在配置文件中有以下设置:
bash
save 900 1 # 在900秒(15分钟)之后,如果至少有1个key发生改变,Redis就会自动触发RDB持久化操作。
save 300 10 # 在300秒(5分钟)之后,如果至少有10个key发生改变,Redis就会自动触发RDB持久化操作。
save 60 10000 # 在60秒(1分钟)之后,如果至少有10000个key发生改变,Redis就会自动触发RDB持久化操作。
此外,可以通过SAVE
或者BGSAVE
命令手动触发RDB持久化操作。SAVE
命令会阻塞数据库的所有其他操作,直到RDB文件创建完毕,而BGSAVE
命令则会在后台创建RDB文件。
二、AOF 持久化
与RDB不同,AOF持久化方式记录服务器接收到的每一条写命令。这些命令以Redis协议的格式保存在Append Only File(AOF)文件的末尾。当Redis服务器重启时,它会通过重新执行保存在AOF文件中的所有写命令来还原数据集。
为了减小AOF文件的大小,Redis提供了BGREWRITEAOF
命令,该命令可以创建一个新的AOF文件。这个新的AOF文件和原始的AOF文件代表相同的数据集,但通常体积更小。
此外,用户可以根据自己的需求配置AOF的fsync策略,即决定何时将数据真正写入磁盘。有以下三种选择:
bash
appendfsync always # 每次有数据修改发生时都会写入AOF文件, 这样会严重降低Redis的速度
appendfsync everysec # 每秒钟同步一次,显示地将多个写命令同步到硬盘
appendfsync no # 完全依赖操作系统,性能最好
两种持久化方式各有优缺点,可以根据具体的应用场景选择使用。另外,也可以同时开启两种持久化方式,以充分利用两者的优点。
ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ
ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ