HM-SpringCloud微服务系列10.1.1【前置工作、Redis持久化之RDB持久化】
2022/4/24 19:13:07
本文主要是介绍HM-SpringCloud微服务系列10.1.1【前置工作、Redis持久化之RDB持久化】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
网络服务重启:
systemctl restart network.service
docker服务启动:systemctl start docker
本节redis不用docker
课前准备:centos7虚拟机单机安装redis
首先需要安装Redis所需要的依赖:yum install -y gcc tcl
然后将课前资料提供的Redis安装包上传到虚拟机的任意目录(例如/tmp目录):
解压缩:tar -xvf redis-6.2.4.tar.gz
解压后:
进入redis目录cd redis-6.2.4
运行编译命令:make && make install
如果没有出错,应该就安装成功了。
然后修改redis.conf文件中的一些配置:
# 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问 bind 0.0.0.0 # 数据库数量,设置为1 databases 1
启动redis服务: redis-server redis.conf
停止redis服务: redis-cli shutdown
分布式缓存(Redis集群)导言
单点redis存在4大问题的解决方案对应本章四个小结
1. RDB持久化
1.1 默认的RDB
RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。
简单来说就是把内存中的所有数据都记录到磁盘中。
当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。
快照文件称为RDB文件,默认是保存在当前运行目录。
redis停机时会执行一次RDB。
服务端窗口1启动redis服务
客户端窗口2访问redis服务
存完一条数据后,回到服务端ctrl+c
停止
可以从日志中看到先在磁盘的当前目录保存的RDB文件再退出redis,称为“优雅停机”
现在ctrl+c
也先停止客户端
然后重启服务端
再重启服务端访问刚才放到redis的数据
综上,redis默认就实现了持久化
以上演示情况:不过是停机时才会触发;万一突然宕机则数据可能会丢失。
1.2 RDB参数自定义
先停掉服务端&客户端,修改一下配置
5秒内,如果有1个key被修改,就会触发
RDB文件名字也修改一下
现在重启redis服务
可以看到这次并没有读取RDB文件恢复数据的日志了,因为RDB文件改名字了
打开客户端测试一下
果不其然。
此时,现往redis里存一个数据
此时,查看服务端(并没有ctrl+c
停止服务)也会触发(自动触发)
考虑到频率太快会给redis造成压力,而频率太慢又增大了数据丢失的风险;一般使用redis配置文件里提供的默认触发频率就行,后续还有弥补方案
1.3 RDB底层原理
1.4 小结
- RDB方式bgsave的基本流程?
- fork主进程得到一个子进程,共享内存空间
- 子进程读取内存数据并写入新的RDB文件
- 用新RDB文件替换旧的RDB文件。
- RDB会在什么时候执行?save 60 1000代表什么含义?
- 默认是服务停止时。
- 代表60秒内至少执行1000次修改则触发RDB
- RDB的缺点?
- RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
- fork子进程、压缩、写出RDB文件都比较耗时
这篇关于HM-SpringCloud微服务系列10.1.1【前置工作、Redis持久化之RDB持久化】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南