沃梦达 / IT编程 / 数据库 / 正文

【Redis】数据持久化

说明:Redis数据是保存在内存中的,重启计算机数据就会丢失。Redis数据持久化表示把内存中的数据保存到磁盘,重启时再次加载数据以保证数据不丢失。两种解决方案:RDB :持久化可以在指定的时间间隔内生成数据集的时...

说明:Redis数据是保存在内存中的,重启计算机数据就会丢失。Redis数据持久化表示把内存中的数据保存到磁盘,重启时再次加载数据以保证数据不丢失。

两种解决方案:

RDB :持久化可以在指定的时间间隔内生成数据集的时间点快照。 AOF :持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
Redis还可以同时使用 AOF 持久化和 RDB 持久化。在这种情况下,当Redis重启时,它会优先使用 AOF 文件来还原数据集,因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
你甚至可以关闭持久化功能,让数据只在服务器运行时存在。
? 如何选择: 一般来说, 如果想达到足以媲美 PostgreSQL 的数据安全性, 你应该同时使用两种持久化功能。 如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。 有很多用户都只使用 AOF 持久化, 但我们并不推荐这种方式: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快, 除此之外, 使用 RDB 还可以避免 AOF 程序的 bug。 ? 具体操作: 打开redis目录下的conf文件。 RDB 快照配置(默认开启):
save 9001 //900 秒内有至少有 1 个键被改动就触发保存
save 30010 //300 秒内有至少有 10 个键被改动就触发保存
save 6010000 //60 秒内有至少有 1000 个键被改动就触发保存
dbfilename "dump.rdb" //持久化文件名称
dir "/data/dbs/redis/6381" //持久化数据文件存放的路径
? AOF(默认关闭):
dir "/data/dbs/redis/6381"#AOF文件存放目录
appendonly no #AOF持久化,默认关闭开启填写yes
appendfilename "appendonly.aof"#AOF文件名称(默认)
# appendfsync always #每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐(默认)
# appendfsync no #完全依赖os,性能最好,持久化没保证
auto-aof-rewrite-percentage 100#触发AOF文件重写的条件(默认)
auto-aof-rewrite-min-size 64mb#触发AOF文件重写的条件(默认)

 

? ? ? ? ?

本文标题为:【Redis】数据持久化