Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
Redis高级特性解析:持久化、主从复制与哨兵机制全面探讨 PDF 下载
发布于:2024-03-10 10:28:46
(假如点击没反应,多刷新两次就OK!)

Redis高级特性解析:持久化、主从复制与哨兵机制全面探讨 PDF 下载 图1

 

 

资料内容:

 

AOF(append-only file)

快照功能并不是非常耐久(durable): 如果 Redis 因为某些原因而造成故障停机, 那么服务器将丢失

最近写入、且仍未保存到快照中的那些数据。从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方

式: AOF 持久化,将修改的每一条指令记录进文件appendonly.aof中(先写入os cache,每隔一段时间

fsync到磁盘)

比如执行命令“set zhuge 666”,aof文件里会记录如下数据

1 *32 $3

3 set

4 $5

5 zhuge

6 $3

7 666

这是一种resp协议格式数据,星号后面的数字代表命令有多少个参数,$号后面的数字代表这个参数有几

个字符

注意,如果执行带过期时间的set命令,aof文件里记录的是并不是执行的原始命令,而是记录key过期的

时间戳

比如执行“set tuling 888 ex 1000”,对应aof文件里记录如下

1 *3

2 $3

3 set

4 $6

5 tuling

6 $3

7 888

8 *3

9 $9

10 PEXPIREAT

11 $6

12 tuling

13 $13

14 1604249786301

你可以通过修改配置文件来打开 AOF 功能:

1 # appendonly yes

从现在开始, 每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文

件的末尾。

这样的话, 当 Redis 重新启动时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目

的。

你可以配置 Redis 多久才将数据 fsync 到磁盘一次。

有三个选项:

1 appendfsync always:每次有新命令追加到 AOF 文件时就执行一次 fsync ,非常慢,也非常安全。

2 appendfsync everysec:每秒 fsync 一次,足够快,并且在故障时只会丢失 1 秒钟的数据。

3 appendfsync no:从不 fsync ,将数据交给操作系统来处理。更快,也更不安全的选择。

推荐(并且也是默认)的措施为每秒 fsync 一次, 这种 fsync 策略可以兼顾速度和安全性。

AOF重写

AOF文件里可能有太多没用指令,所以AOF会定期根据内存的最新数据生成aof文件

例如,执行了如下几条命令:

1 127.0.0.1:6379> incr readcount

2 (integer) 13 127.0.0.1:6379> incr readcount

4 (integer) 2

5 127.0.0.1:6379> incr readcount

6 (integer) 3

7 127.0.0.1:6379> incr readcount

8 (integer) 4

9 127.0.0.1:6379> incr readcount

10 (integer) 5

重写后AOF文件里变成

1 *3

2 $3

3 SET

4 $2

5 readcount

6 $1

7 5