Redis(②-持久化)
持久化就是把内存里的临时数据,写到硬盘上保存起来,防止断电、程序崩溃后数据丢失。
RDB 方式(快照模式)
RDB 是 Redis 默认的持久化方式,会在特定条件下把内存中的全量数据生成一个快照文件(默认文件名是 dump.rdb
),保存到硬盘。
Redis 的配置文件(通常是 redis.conf
)里,默认已经设置了 RDB 的触发规则,格式如下:
# 格式:save <秒数> <修改次数>
# 意思是:在指定秒数内,数据被修改了指定次数,就触发一次 RDB 快照
save 900 1 # 900秒(15分钟)内有1次修改
save 300 10 # 300秒(5分钟)内有10次修改
save 60 10000 # 60秒(1分钟)内有10000次修改
这三个规则满足任意一个,就会自动生成 RDB 文件。
手动触发 RDB(常用操作)
save 命令
在 redis-cli 中输入:
save
✅ 效果:立即生成 RDB 文件
⚠️ 注意:执行期间会阻塞 Redis 服务(不能处理其他命令),适合数据量小的场景。
bgsave 命令(推荐)
在 redis-cli 中输入:
bgsave
✅ 效果:后台生成 RDB 文件,不阻塞 Redis 服务(可以正常处理其他命令)
这是生产环境常用的手动触发方式。
AOF 方式(日志模式)
AOF(Append Only File)是 Redis 的另一种持久化方式,核心是记录所有写操作命令(比如 SET
、HSET
、DEL
等),重启时通过重新执行这些命令恢复数据。相比 RDB,它的优势是数据安全性更高(可减少丢失),适合对数据完整性要求高的场景。
AOF 的核心原理
当你执行写命令时,Redis 会先把命令写入内存的命令缓冲区,然后根据配置规则同步到硬盘的 AOF 文件中。
AOF 文件默认名为 appendonly.aof,内容是纯文本格式的 Redis 命令(比如 *3\r\n$3\r\nSET\r\n$4\r\nname\r\n$5\r\ntest\r\n,这是 SET name test 的编码形式)。
开启 AOF(默认关闭,需手动开启)
找到 Redis 配置文件
即 redis.conf(Windows 可能是 redis.windows.conf),在解压的 Redis 目录中可以找到。
修改配置开启 AOF
用文本编辑器打开配置文件,搜索 appendonly,找到这一行:
appendonly no # 默认关闭
把 no
改成 yes
:
appendonly yes # 开启 AOF
可选:调整同步策略(影响数据安全性和性能)
AOF 有 3 种同步硬盘的策略(配置文件中 appendfsync 参数):
# appendfsync always # 每次写命令都立即同步到硬盘(最安全,但性能最差)
appendfsync everysec # 每秒同步一次(默认,平衡安全和性能,最多丢1秒数据)
# appendfsync no # 由操作系统决定何时同步(性能好,但数据丢失风险高)
新手推荐用默认的 everysec(每秒同步)。
重启 Redis 生效
关闭正在运行的 Redis 服务,再用修改后的配置文件启动:
# 关闭 Redis(如果已启动)
redis-cli shutdown# 用新配置启动
redis-server redis.conf # Linux/Mac
# Windows 可能是:redis-server.exe redis.windows.conf
AOF 文件默认保存在 Redis 的工作目录(用 config get dir 命令可查看目录路径),文件名是 appendonly.aof。
打开这个文件,能看到刚才执行的所有写命令(可能是编码后的格式,不用深究,知道记录了命令就行)。