Redis的两种持久化方案简介与对比

    xiaoxiao2023-11-21  169

    Q:为什么Redis要持久化?

    A:Redis的高性能是因为其使用了内存来储存数据,而RAM有易失性,所以在服务器宕机或断电后会导致Redis储存在其中的数据丢失。Redis也提供了持久化数据的方案。

    Q:为什么我不设置持久化也能在重新打开Redis服务时恢复之前的数据?

    A:因为Redis已默认启用了一种持久化方案。


    下面是两种方式的介绍

    (conf文件里对应的配置部分有着对应的参数解释)

    RDB方式(Redis database)

    经过一定时间后,将内存数据的快照写入到磁盘中

    优点:

    备份里只包含一个文件,便于备份的归档管理节省磁盘空间数据库恢复速度快

    缺点:

    数据完整性问题(系统有可能在进行持久化前发生宕机)速度下降问题(数据量过大时可能导致服务器停顿)

    如何启用:

    打开redis的conf文件 windows下为redis.windows.confLinux下为redis.conf   找到SNAPSHOTTING下的 # like in the following ... # ... # save "" save 900 1 (900秒内至少有1条key发生变化,就写一次快照,下二同理) save 300 10 save 60 10000

    AOF方式(Append only file)

    以日志的形式记录数据库处理的每一个操作,在Redis服务重启时将日志读入,执行每一条命令,重建数据库。由于是追加的形式写入到日志文件里,当文件大小超过了设置的阈值,会压缩日志文件,保留仅可以恢复的日志。

    优点:

    备份机制更为安全可读性高的日志文件,便于恢复,处理错误等

    缺点:

    相比RDB的方式对磁盘的开销更大备份速度较慢(备份频率相对更高,也更安全)

    如何启用:

    打开redis的conf文件

    windows下为redis.windows.confLinux下为redis.conf 找到APPEND ONLY MODE下的 # AOF and RDB ... # ... # Please ... appendonly no (AOF默认未启用,要使用则将no改为yes) # The name ... appendfilename "appendonly.aof" (这是AOF产生的日志文件的文件名) (与redis-server.exe等文件存于同一个目录下) # The fsyn() call ... # ... # If unsure ... # appendfsync always(每次更新同步更新日志) appendfsync everysec(默认给你选这个) # appendfsync no(不同步) (要打开哪个就去掉之前的#号) # Specify a percentage of zero in order to disable the automatic AOF # rewrite feature. auto-aof-rewrite-percentage 100 (超出了这个百分比就重写) auto-aof-rewrite-min-size 64mb (重写出的文件不应小于64mb,和上面的条件共同控制是否进行rewrite这个操作)

    RDB和AOF哪个好

    官方推荐都启用对数据不敏感,单独用RDB不建议单独使用AOF若作为纯缓存使用,可以都不开启

    官方的文档:Redis Persistence

    参考的博客:介绍Redis的各种用途以及使用场景


    最新回复(0)