Redis数据库持久化

文章介绍了Redis的两种持久化方式:RDB(快照)和AOF(追加日志),包括各自的持久化机制、优缺点以及实验步骤。RDB适合全量备份,恢复速度快,但可能丢失数据;AOF提供更好的数据安全性,支持秒级同步,但文件体积大且恢复速度慢。文章还展示了如何通过配置文件启用和调整这两种持久化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备:

一台redis服务器

安装过程在Redis7.0安装

理论部分:

redis 提供了两种持久化的方式

分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB持久化三种机制:

    以快照的形式持久化文件

        (1)Save         客户端的请求是阻塞状态

        (2)Bgsave     redis产生子进程将快照文件保存到硬盘,客户端的请求不阻塞

        (3)自动同步    save 300 1

AOF三种持久化机制

   以文件的形式持久化,将每一条增删改操作写入文件当中

      (1)每修改同步always:同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好

      (2)每秒同步everysec:异步操作,每秒记录 如果一秒内宕机,有数据丢失

      (3)no:  会随着操作系统的同步而同步

RDB和AOF的优缺点:

优点:

RDB:

RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。

生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。

RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

AOF:

相对于RDB,能够保证数据的安全

AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧急恢复。

缺点:

RDB:

RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据。

AOF:

对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大,并且在恢复的时候也没有RDB快

实验部分:

RDB方式:

修改redis配置文件

vim /usr/local/redis/bin/redis.conf 

#在434行添加save 300 1    表示 开启RDB快照功能,300秒内有1个keys变更,则触发快照功能
save 300 1
save 900 10

#448行,当RDB快照后台进程失败,不影响用户得写操作
 stop-writes-on-bgsave-error yes

#454行,是否将RDB快照文件压缩,关闭后会增加性能
rdbcompression yes

#463行,关闭RDB快照文件的检查校验,增加性能
 rdbchecksum yes

#481行,快照的名称
dbfilename dump.rdb

#504行,存放快照的路径(这个需要改)
dir /usr/local/redis/

重启redis

systemctl restart redis.service

登录redis,添加数据测试

redis-cli -h 192.168.100.1 -p 6379 -a 123123
#这个数据随便写
set student1 lzz
set student2 wyb
set student3 zmy


查看一下刚刚写入的数据

退出redis,重启redis

exit

systemctl restart redis.service 

登录查看

redis-cli -h 192.168.100.1 -p 6379 -a 123123

数据还在,如果不在,可能没有触发save,可以在写完数据后,手动输入save在重启查看

AOF方式:

 编辑配置文件

vim /usr/local/redis/bin/redis.conf 

#注释掉434行的save,刚刚写入的save都要注释

#1380行,将no改为yes,这是开启AOF持久化
appendonly yes

#1407行,指定持久化的文件
appendfilename "appendonly.aof"

#1439行,频率
appendfsync everysec

#1461行,如若设置为yes,则redis执行的命令会存放到缓冲区,待系统自动同步到硬盘
no-appendfsync-on-rewrite no

#1480行,若当前写入的AOF文件达到了上次rewrite文件大小的100%,则触发rewrite操作
auto-aof-rewrite-percentage 100

#1481行,设置AOF持久化重写文件的最小值,当达到60M并且符合100%的条件时,则触发rewrite操作
auto-aof-rewrite-min-size 64mb

appendfsync  的选项

重启redis

systemctl restart redis.service 

登录redis后发现数据全部消失了,这是因为:

RDB持久化的数据,当改为AOF持久化的时候,数据是无法同步的

重新写入数据

 退出,查看AOF持久化文件

vim /usr/local/redis/appendonlydir/appendonly.aof.1.incr.aof

重启redis,登录查看

 倘若想要RDB里边的数据,持久化到AOF,需要在RDB模式中,临时开启AOF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值