Redis的持久化方式
Redis是一种高性能的内存数据库,但它也提供了持久化机制,以确保数据在重启或崩溃时不会丢失。Redis的持久化方式主要有两种:RDB(Redis Database Backup) 和 AOF(Append−Only File)。
RDB持久化方式
RDB持久化是通过在指定的时间间隔内将内存中的数据快照写入磁盘来实现的,这个过程通常被称为“快照”。当Redis的服务器需要持久化数据时,它会创建一个内存数据的二进制映像,并将这个映像写入到一个叫做dump.rdb的文件中,这个过程是自动进行的,也可以通过命令手动触发。
RDB方式的配置
RDB方式在Redis数据库中是默认支持的,有关RDB持久化的配置项如下:
1、save:持久化策略。
- save 900 1:过去15分钟(900秒)数据有1次以上改动时则将内存中的数据保存至硬盘中。
- save 300 10:过去5分钟(300秒)数据有10次以上改动时保存数据。
- save 600 10000:过去1分钟(60秒)数据有10000次以上改动时保存数据。

2、dbfilename dump.rdb:保存数据的文件名称。

3、dir /var/lib/redis:数据文件保存路径。

AOF持久化方式
AOF持久化是通过记录每个写操作(命令),并追加到AOF文件的末尾来实现的。这种方式可以保证即使服务器重启,也可以通过重新执行这些命令来恢复数据。
由于AOF持久化是Redis不断将写命令记录到AOF文件中,所以导致AOF文件会越来越大。文件越大则占用服务器内存也就越多,AOF文件恢复时间越长。为了解决这个问题,Redis新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。
AOF方式的配置
AOF方式在Redis数据库中默认未启用,有关AOF持久化的配置项如下:
1、appendonly no:是否启用aof(默认不启用)。要启用AOF,可将no改为yes。

2、appendfilename "appendonly.aof":AOF文件名称,默认为appendonly.aof。

3、appendfsync:AOF持久化策略。
- appendfsync always:始终同步,有数据写入时就直接写入AOF文件。
- appendfsync everysec:每秒同步,每秒定时向AOF文件写入新增数据。
- appendfsync no:不进行同步管理,由操作系统自行决定何时写入AOF文件。

4、AOF文件的自动重写配置。
- auto-aof-rewrite-percentage 100:当目前的AOF文件大小超过上一次重写的AOF文件大小的百分之多少时进行重写,默认是100%。
- auto-aof-rewrite-min-size 64mb:允许重写的最小AOF文件大小,避免了达到约定百分比而文件仍然很小的情况下进行文件重写。

RDB与AOF的优缺点
RDB适合于完全备份和灾难恢复。因为它是内存数据的快照,所以恢复速度快,但不适合实时性要求高的场景。
AOF更适合于数据恢复和实时性要求高的场景。它可以记录每一个写入操作,所以可以保证数据的完整性。但相对于RDB,AOF文件的体积可能会更大。
在实际使用中,可以根据具体需求选择单一的持久化方式或者同时使用这两种方式(例如,定期进行RDB快照备份,同时开启AOF实时记录)。这样可以在保证数据安全的同时,也兼顾到性能和存储空间的使用。