Redis---数据持久化之RDB与AOF

这篇具有很好参考价值的文章主要介绍了Redis---数据持久化之RDB与AOF。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据持久化之RDB

1、RDB介绍

Redis 数据库文件,全称 Redis DataBase,数据持久化方式之一,数据持久化默认方式,按照指定时间间隔,将内存中的数据及快照写入硬盘
定义RDB文件名
dbfilename "dump.rdb"

RDB指dump.rdb文件; redis数据每次存盘,如果不指定持久化的方式,数据就会默认存入dump.rdb文件中

2、相关配置

数据从内存保存到硬盘的频率

save   900      1           # 900秒 (15分钟) 且有1个key改变即存盘
save   300     10           # 300秒 (5分钟) 且有10个key改变即存盘
save    60     10000        # 60秒 (1分钟) 且有10000个key改变即存盘

手动存盘

save                    # 阻塞写存盘
bgsave                  # 不阻塞写存盘

阻塞写存盘:即当内存中有1G大小的数据,执行了save命令,要写入硬盘,这个过程需要1分钟,则在这一分钟的时间内,不允许向内存中存入数据

不阻塞写存盘:即当内存中有1G大小的数据,执行了bgsave命令,要写入硬盘,这个过程需要1分钟,则在这一分钟的时间内,是允许向内存中继续存入数据的

save 将内存中的数据写入到硬盘

# 删除原有的持久化文件
[root@template ~]# rm  /var/lib/redis/6379/* 
[root@template redis-4.0.8]# redis-cli
127.0.0.1:6379> ping
PONG
# 添加数据
127.0.0.1:6379> mset v1 2 v2 4 v3 xx v4 66
OK
# 将内存中的数据马上写入到硬盘中(自动存盘的规则,需要满足条件)
127.0.0.1:6379> SAVE
OK		
127.0.0.1:6379> exit
# 采用默认持久化方式,数据存到dump.rdb中
[root@template ~]# ll /var/lib/redis/6379/
total 4
-rw-r--r--. 1 root root 231 Apr 17 20:02 dump.rd

重启redis服务以后,数据依然存在

[root@template redis-4.0.8]# redis-cli shutdown
[root@template redis-4.0.8]# ps -ef | grep redis.conf
root     121839   1221  0 20:05 pts/0    00:00:00 grep --color=auto redis.conf

重新开启redis服务

[root@template redis-4.0.8]# /etc/init.d/redis_6379 start
Starting Redis server...

查看当前库下所有的数据,依然存在,数据永久存储

[root@template redis-4.0.8]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> KEYS *
1) "site"
2) "student"
3) "v1"
4) "v4"
5) "v2"
6) "v3"

3、 数据备份与恢复

备份数据:备份dump.rdb 文件到其他位置

恢复数据:拷贝备份文件到数据库目录,启动 redis 服务

redis服务器数据备份,备份dump.rdb文件,到/opt目录下

[root@template ~]# cp /var/lib/redis/6379/dump.rdb /opt/

将备份的数据拷贝给template,让template拥有相同的数据

[root@template~]# scp /opt/dump.rdb  root@192.168.11.110:/root/

进行redis的数据恢复,停止redis服务

[root@template~]# /etc/init.d/redis_6379 stop

# 删除template,redis持久化数据文件
[root@template~]# rm -rf /var/lib/redis/6379/dump.rdb 	

# 将从template主机备份的文件,拷贝到redis的数据目录下
[root@template~]# cp /root/dump.rdb  /var/lib/redis/6379/	

# 重启服务,会重新加载dump.rdb
[root@template~]# /etc/init.d/redis_6379 start		
[root@template~]# redis-cli
127.0.0.1:6379> keys *
127.0.0.1:6379> exit

4、验证redis自动存盘

实验环境准备,停止redis服务

[root@template~]# redis-cli -h 192.168.11.10 -p 6350 -a 123456 shutdown

进入到redis默认路径下,删除rdb数据文件

[root@template~]# cd /var/lib/redis/6379/
[root@template~]# rm -rf dump.rdb

配置文件中修改存盘时间

[root@template ~]# vim /etc/redis/6379.conf
 .......
219 save 900 1		#900秒 (15分钟) 且有1个key改变即存盘,不修改
220 save 120 10		#120秒 (2分钟) 且有10个key改变即存盘, 修改修改修改!!!!!
221 save 60 10000	#60秒(1分钟)且有10000个key改变即存盘,不修改

启动redis服务

[root@template ~]# /etc/init.d/redis_6379 start

连接redis,存入变量

[root@template ~]# redis-cli

向reids中连续存入10个以上的变量

127.0.0.1:6379> mset v1 1 v2 1 v3 1 v4 1 v5 1 v6 1 v8 1 v9 1 v10 1 v11 1
127.0.0.1:6379> keys *
127.0.0.1:6379> exit

在redis的数据目录下,两分钟dump.rdb出现,验证redis自动持久化成功

[root@template ~]# ls /var/lib/redis/6379

5、优点与缺点

RDB优点:

高性能的持久化实现 ——》 创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件;过程中主进程不做任何IO操作
1》持久化的效率高,因为是由一个单独的子进程来负责将内存中的数据写入到硬盘;
2》持久化过程:将当前进程中的数据生成快照文件,替换上次的持久化文件

PS:进程中的数据,指redis的所有数据,比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合

恢复数据简单,拷贝备份数据,重启服务即可,因为RDB方式,有可能会丢失最后一次的持久化数据,使用时需要对数据完整性要求不高

RDB的缺点:

意外宕机时,丢失最后一次持久化的所有数据
1》redis 是每隔900秒(15分钟),或者300秒(5分钟),或者一分钟变量改变10000次,会进行一次持久化(将内存数据写入到硬盘);
2》如果在还没有到达临界点时(例如:一分钟变量改变 9999次),硬盘损坏,会导致这9999次的数据丢失。

二、数据持久化之AOF

1、AOF介绍

Append Only File
追加方式记录写操作的文件,记录 redis 服务所有写操作,不断的将新的写操作,追加到文件的末尾,默认没有启用,使用cat命令可以查看文件内容

2、开启AOF持久化功能,在template 上操作

[root@template ~]# redis-cli
127.0.0.1:6379> keys *
127.0.0.1:6379> config set appendonly yes		#开启AOF持久化功能
127.0.0.1:6379> config rewrite				#将临时配置写到配置文件中
127.0.0.1:6379> exit
[root@template ~]# ls /var/lib/redis/6379/
appendonly.aof  dump.rdb

3、查看AOF相关配置,在template上操作

[root@template ~]# vim /etc/redis/6379.conf 
673:appendonly yes					# aof持久化已经启用
677:appendfilename "appendonly.aof"		# aof持久化存放数据的文件名

4、AOF文件记录写操作的方式

[root@template ~]# vim /etc/redis/6379.conf 
702 # appendfsync always		#always 在redis中每进行一次写操作, 都会将记录存入appendonly.aof中,并将数据持久化到 dump.rdb文件中
 
703 appendfsync everysec		#everysec 将写操作记录到appendonly.aof中,每秒执行一次,并将数据持久化到 dump.rdb文件中
 
704 # appendfsync no			# no  只把写操作记录到appendonly.aof中,不会进行RDB持久化(节省系统资源)

5、备份与恢复

备份数据:备份 appendonly.aof 文件到其他位置

redis服务器数据备份,在template 上操作

[root@template ~]# cp /var/lib/redis/6379/appendonly.aof  /opt/

将备份的aof数据文件拷贝给node01,让node01拥有相同的数据

[root@template ~]# scp /opt/appendonly.aof  root@192.168.11.110:/root/

恢复数据:拷贝备份文件到数据库目录,启动 redis 服务

[root@node01~]# /etc/init.d/redis_6379 stop
[root@node01~]# rm -rf /var/lib/redis/6379/dump.rdb
[root@node01~]# cp appendonly.aof  /var/lib/redis/6379/

开启本机的AOF持久化功能

[root@node01~]# vim /etc/redis/6379.conf
673 appendonly yes		#no 修改为yes,启动AOF功能
[root@node01~]# /etc/init.d/redis_6379 start
[root@node01~]# redis-cli
127.0.0.1:6379> keys *
127.0.0.1:6379> exit

6、优化配置

日志文件会不断增大,何时触发日志重写?

auto-aof-rewrite-min-size    64mb          //首次重写触发值
auto-aof-rewrite-percentage   100          //到达增长百分比,再次执行重写

查看redis的日志优化配置,在template上操作

#当日志的数据第一次达到64mb时,会触发重写,重写后文件大小为50Mb
#继续向日志中存入数据,日志大小为100Mb时,会触发重写,重写后文件大小为80Mb
#继续向日志中存入数据,日志大小为160Mb时,会触发重写,重写后文件大小为140Mb
#继续向日志中存入数据,日志大小为280Mb时,会触发重写,重写后文件大小为260Mb
[root@template~]# vim /etc/redis/6379.conf
 744 auto-aof-rewrite-percentage 100
 745 auto-aof-rewrite-min-size 64mb

7、AOF优点与缺点

AOF优点

可以灵活设置持久化方式,出现意外宕机时,仅可能丢失1秒的数据

AOF缺点

持久化文件的体积通常会大于 RDB 方式,执行 fsync 策略时的速度可能会比 RDB 方式慢,验证AOF存储数据占用更多空间,在template上操作,统计appendonly.aof的行数

[root@node01 6379]# wc -l appendonly.aof 
82 appendonly.aof
[root@node01 6379]# redis-cli 
127.0.0.1:6379> set test 22
127.0.0.1:6379> exit   #断开redis连接
[root@node01 6379]# wc -l appendonly.aof 		#再次统计appendonly.aof的行数
94 appendonly.aof

8、生产环境的使用:

RDB和AOF持久化 需要同时开启,RDB做持久化,AOF记录redis执行命令文章来源地址https://www.toymoban.com/news/detail-418474.html

到了这里,关于Redis---数据持久化之RDB与AOF的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java 进阶篇】Redis持久化之RDB:数据的安全守护者

    Redis,作为一款高性能的键值存储系统,支持多种持久化方式,其中RDB(Redis DataBase)是其最常用的一种。RDB可以将当前时刻的数据快照保存到磁盘,以便在Redis重启时快速恢复数据。本文将深入探讨RDB的原理、配置和实际应用,帮助初学者更好地理解和使用Redis的持久化机制

    2024年02月05日
    浏览(48)
  • Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

    Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。 Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。 该机制是指

    2024年01月24日
    浏览(59)
  • Redis两种持久化方案RDB持久化和AOF持久化

    Redis持久化 Redis有两种持久化方案: RDB持久化 AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件

    2024年02月14日
    浏览(53)
  • 全面解析 Redis 持久化:RDB、AOF与混合持久化

    前言: 每次你在游戏中看到玩家排行榜,或者在音乐应用中浏览热门歌单,有没有想过这个排行榜是如何做到实时更新的?当然,依靠 Redis 即可做到。 在技术领域,我们经常听到 「键值存储」 这个词。但在 Redis 的世界里,这只是冰山一角。Redis 的对象,不仅仅是简单的数据

    2024年03月10日
    浏览(63)
  • redis持久化之RDB

    RDB(Redis DataBase):RDB 持久性以指定的时间间隔执行数据集的时间点快照。 说人话:实现类似照片记录效果的方式,把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照,恢复时再将硬盘快照文件直接读回到内存里。 这样一来,即使故障宕机,快照文件也不会丢

    2024年02月04日
    浏览(43)
  • redis 持久化 RDB + AOF

    RDB(Redis DataBase)和AOF(Append Only File) RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上 AOF,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

    2024年02月03日
    浏览(58)
  • 【Redis】—— Redis的RDB持久化机制

                                                                       💧 【 R e d i s 】—— R e d i s 的 R D B 持久化机制 color{#FF1493}{【Redis】 —— Redis的RDB持久化机制} 【 R e d i s 】 —— R e d i s 的 R D B 持久化机制 💧           🌷 仰望天空

    2024年02月13日
    浏览(36)
  • Redis_持久化(AOF、RDB)

    目前,redis的持久化主要应用AOF(Append Only File)和RDF两大机制,AOF以日志的形式来记录每个写操作(增量保存),将redis执行过的所有指令全部安全记录下来(读操作不记录)。只许追加文件,但不可以改写文件,redis启动之初,会读取该文件,重新构建数据。 AOF默认不开启

    2024年02月13日
    浏览(53)
  • Redis优化 RDB AOF持久化

    ---------------------- Redis 高可用 ---------------------------------------- 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主

    2024年02月09日
    浏览(54)
  • Redis 持久化RDB和AOF

    Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识 持久化 。 RDB 是 Redis 默认的持久化

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包