跳转至

Redis数据持久化

Redis 提供了多种数据持久化机制,主要包括 RDB(Redis Database)快照和 AOF(Append Only File)日志。下面分别介绍这两种持久化机制,并给出相应的示例。

RDB 快照持久化

RDB 持久化是指在特定的时间间隔生成数据的快照,并将其存储到磁盘中。这样可以在 Redis 重启时通过加载 RDB 文件来恢复数据。

配置示例

redis.conf 配置文件中,可以配置 RDB 快照:

save 900 1
save 300 10
save 60 10000

# 指定RDB文件的名字
dbfilename dump.rdb

# 指定RDB文件的存储路径
dir /var/lib/redis

上述配置的含义是:

  • 每 900 秒(15 分钟)至少有 1 次写操作时生成快照
  • 每 300 秒(5 分钟)至少有 10 次写操作时生成快照
  • 每 60 秒至少有 10000 次写操作时生成快照

手动生成快照

可以使用以下命令手动生成快照:

BGSAVE

这会在后台生成 RDB 快照,而不会阻塞 Redis 服务。

AOF 日志持久化

AOF 持久化是通过将每个写操作记录到日志文件中,当 Redis 重启时通过重新执行这些命令来恢复数据。相比 RDB,AOF 能更好地保证数据的持久性。

配置示例

redis.conf 配置文件中,可以配置 AOF:

appendonly yes
appendfilename "appendonly.aof"

# AOF的同步策略: always, everysec, no
appendfsync everysec

# 自动重写 AOF 文件的条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

上述配置的含义是:

  • 开启 AOF 持久化,并将日志记录到 appendonly.aof 文件中
  • 每秒钟将日志同步到磁盘
  • 当 AOF 文件大小超过上次重写后文件大小的 100% 时,且文件大小至少为 64MB 时,触发自动重写

手动触发 AOF 重写

可以使用以下命令手动触发 AOF 重写:

BGREWRITEAOF

这会在后台进行 AOF 文件重写操作。

综合示例

以下是一个综合示例,展示了如何在 Redis 中使用 RDB 和 AOF 进行数据持久化。

配置文件(redis.conf)

# RDB 配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis

# AOF 配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

运行 Redis

启动 Redis 服务,并加载上述配置文件:

redis-server /path/to/redis.conf

使用 Redis

连接 Redis 并进行操作:

redis-cli
SET key "value"
GET key

在后台,Redis 会根据配置生成 RDB 快照和 AOF 日志文件,从而实现数据的持久化。通过这些文件,Redis 可以在重启后恢复数据,确保数据不会丢失。

这就是 Redis 数据持久化的基本概念和示例配置。通过合理的配置和使用 RDB 和 AOF,可以实现 Redis 数据的高效持久化和恢复。

评论