当前位置:网站首页>(二)Docker安装Redis实战(持久化AOF和RDB快照)
(二)Docker安装Redis实战(持久化AOF和RDB快照)
2022-08-11 05:13:00 【小谭在沪漂】
正文
为什么需要持久化
Redis是个基于内存的数据库。那服务一旦宕机,内存中的数据将全部丢失。通常的解决方案是从后端数据库恢复这些数据,但后端数据库有性能瓶颈,如果是大数据量的恢复,
1、会对数据库带来巨大的压力
2、数据库的性能不如Redis。导致程序响应慢。所以对Redis来说,实现数据的持久化,避免从后端数据库中恢复数据,是至关重要的。
持久化分为:AOF和RDB快照
RDB快照:RDB 就是 Redis DataBase 的缩写,中文名为快照/内存快照,RDB持久化是把当前进程数据生成快照保存到磁盘上的过程,由于是某一时刻的快照,那么快照中的值要早于或者等于内存中的值。
AOF存储:Redis是“写后”日志,Redis先执行命令,把数据写入内存,然后才记录日志。日志里记录的是Redis收到的每一条命令,这些命令是以文本形式保存。
而AOF日志采用写后日志,即先写内存,后写日志。
为什么采用写后日志?
Redis要求高性能,采用写日志有两方面好处:
避免额外的检查开销:Redis 在向 AOF 里面记录日志的时候,并不会先去对这些命令进行语法检查。所以,如果先记日志再执行命令的话,日志中就有可能记录了错误的命令,Redis 在使用日志恢复数据时,就可能会出错。
不会阻塞当前的写操作但这种方式存在潜在风险:
- 如果命令执行完成,写日志之前宕机了,会丢失数据。
- 主线程写磁盘压力大,导致写盘慢,阻塞后续操作。
如何实现AOF
AOF日志记录Redis的每个写命令,步骤分为:命令追加(append)、文件写入(write)和文件同步(sync)。
命令追加 当AOF持久化功能打开了,服务器在执行完一个写命令之后,会以协议格式将被执行的写命令追加到服务器的 aof_buf 缓冲区。
文件写入和同步 关于何时将 aof_buf 缓冲区的内容写入AOF文件中,Redis提供了三种写回策略:
Always 同步写回:每个写命令执行完,立马同步地将日志写回磁盘;
Everysec 每秒写回:每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘;
No 操作系统控制的写回:每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘。
如何在Redis内实现AOF存储呢!往下看
1、开启AOF持久化
首先需要在redis-master.conf配置文件内开启持久化存储,然后重启redis-master主节点
1.1验证 Redis AOF 持久化是否开启成功
需要进入 主节点 内写入key value数据
1.2在AOF内查看key value是否保存成功
需要进入到data目录内,然后找到appendonlydir文件夹里面的后缀为incr.aof的文件,在里面找到sex 和age
2、关闭AOF持久化
首先需要在redis-master.conf配置文件内关闭持久化存储,然后重启redis-master主节点
2.1验证 Redis AOF 持久化是否关闭成功
需要进入 主节点 内写入key value数据
2.2在AOF内查看key value是否保存成功
需要进入到data目录内,然后找到appendonlydir文件夹里面的后缀为incr.aof的文件,是否存在test123 和dcpp456
如何在Redis内实现RDB存储呢!往下看
备注: RDB存储不需要在配置文件内打开开关之类的
1、进入到 redis-master 容器的根目录下面,找到 dump.rdb 文件。查看该文件,显示为空
2、使用 redis-cli 进行连接,输入密码,写入数据
3、使用 exit 退出容器后,在根目录下的 dump.rdb 文件内查看数据是否存在
4、就算在容器的data路径内把 dump.rdb 删除掉。重新启动 redis-master 主节点。然后重新进入到容器内查看数据。数据也会存在的。因为 Redis 的数据是存放在内存里面的。
好啦! Redis 的 AOF 和 RDB 持久化已讲解完毕,下一章节讲解 Redis 如何进行数据迁移
边栏推荐
- guava RateLimiter uniform current limit
- Zabbix builds enterprise-level monitoring and alarm platform
- ARM结构体系4:嵌入式硬件平台接口开发
- redis集群模式--解决redis单点故障
- Tips to improve your productivity, you have to know - Navitcat shortcuts
- 元宇宙社交应用,靠什么吸引用户「为爱发电」?
- Redis-使用jedis连接linux中redis服务器失败的解决方案
- 一个月闭关直接面进大厂,这份Android面试笔记是真的牛逼
- Delphi7 learning record - demo example
- In the closing pages/uninstall (unload) sends a request to the server before the document
猜你喜欢

StarUML使用心得

Zabbix builds enterprise-level monitoring and alarm platform

3 Module 2: Use of scientific research tools

BGP Comprehensive Experiment

Switches and routers technology - 26 - configure OSPF peripheral area

IDEA中配置checkstyle

MySQL must know and must know (primary articles)

宝塔Linux环境下redis开启多端口

ESP8266 教程3 — 通过TCP组建局域网并通信

Four functional interfaces
随机推荐
Golden Warehouse Database KingbaseGIS User Manual (6.10. Geometric Object Operation Operator)
3 Module 2: Use of scientific research tools
输入字符串,替换其中敏感词进行输出
你务必得明白——JSP的九大内置对象与四大域对象
arraylist之与linkedlist
分库分表之sharding-proxy
课堂练习--0708
Redis-使用jedis连接linux中redis服务器失败的解决方案
Thymeleaf
阿里云无法远程连接数据库MySQL错误码10060解决办法_转载
金仓数据库 KingbaseGIS 使用手册(6.8. 几何对象输入函数)
博客目录管理 :机器学习 深度学习 nlp
代理模式(简要介绍)
用白嫖的Adobe正版软件,减少应届毕业生的慢就业、不就业等现象
Redis中RDB和AOF的区别
2022 coal mine gas inspection test, simulation test question and answer
FPGA engineer interview questions collection 111~120
Difference between @Resource and @Autowired
每周推荐短视频:你常用的拍立淘,它的前身原来是这样的!
什么是三次握手和四次挥手(清晰易懂)









