redis操作的数据是在内存中的,它支持两种方案将内存中的数据持久化到硬盘中,下面分别介绍。
1、RDB方式(默认方式)
RDB持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。打开redis.conf,如图:
save 900 1:表示15分钟(900秒钟)内至少1个键被更改则进行快照。
save 300 10:表示5分钟(300秒)内至少10个键被更改则进行快照。
save 60 10000:表示1分钟(60秒)内至少10000个键被更改则进行快照。
这3个是默认配置,只要满足一个就会持久化,也可以自己根据需要配置(添加、减少、修改)。
RDB快照文件的位置默认在bin下面的dump.rdb,可以修改redis.conf进行配置。dbfilename:文件名,dir:路径
Redis启动后读取RDB快照文件,将数据从硬盘载入到内存。通常将一千万个字符串类型键、1GB的快照文件载入到内存需要花费20~30秒钟。
2、AOF方式
默认情况下Redis没有开启AOF(append only file)方式,可以通过修改redis.conf配置文件中的appendonly参数开启。如下图所示:
appendonly设置为true表示开启,appendfilename:AOF文件的名称,默认是: appendonly.aof,dir:路径(与RDB方式使用一个参数)。
开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。
3、两种方式的比较
通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化。
原文地址:https://www.cnblogs.com/javasl/p/12099045.html