Java教程

HM-SpringCloud微服务系列10.1.1【前置工作、Redis持久化之RDB持久化】

本文主要是介绍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目录):
image
image
解压缩:tar -xvf redis-6.2.4.tar.gz
解压后:
image
进入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


image

image

image

image

image

image

image

image

image

image

image

image

image

image

分布式缓存(Redis集群)导言

单点redis存在4大问题的解决方案对应本章四个小结
image
image
image
image
image

1. RDB持久化

1.1 默认的RDB

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。
简单来说就是把内存中的所有数据都记录到磁盘中。
当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。
快照文件称为RDB文件,默认是保存在当前运行目录。
redis停机时会执行一次RDB。
image


服务端窗口1启动redis服务
image
客户端窗口2访问redis服务
image
存完一条数据后,回到服务端ctrl+c停止
image
可以从日志中看到先在磁盘的当前目录保存的RDB文件再退出redis,称为“优雅停机”
image
现在ctrl+c也先停止客户端
image
然后重启服务端
image
再重启服务端访问刚才放到redis的数据
image
综上,redis默认就实现了持久化
以上演示情况:不过是停机时才会触发;万一突然宕机则数据可能会丢失。

1.2 RDB参数自定义

image
先停掉服务端&客户端,修改一下配置
image
5秒内,如果有1个key被修改,就会触发
image
RDB文件名字也修改一下
image
现在重启redis服务
image
可以看到这次并没有读取RDB文件恢复数据的日志了,因为RDB文件改名字了
打开客户端测试一下
image
果不其然。
此时,现往redis里存一个数据
image
此时,查看服务端(并没有ctrl+c停止服务)也会触发(自动触发)
image
考虑到频率太快会给redis造成压力,而频率太慢又增大了数据丢失的风险;一般使用redis配置文件里提供的默认触发频率就行,后续还有弥补方案

1.3 RDB底层原理

image

1.4 小结

  1. RDB方式bgsave的基本流程?
    • fork主进程得到一个子进程,共享内存空间
    • 子进程读取内存数据并写入新的RDB文件
    • 用新RDB文件替换旧的RDB文件。
  2. RDB会在什么时候执行?save 60 1000代表什么含义?
    • 默认是服务停止时。
    • 代表60秒内至少执行1000次修改则触发RDB
  3. RDB的缺点?
    • RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
    • fork子进程、压缩、写出RDB文件都比较耗时
这篇关于HM-SpringCloud微服务系列10.1.1【前置工作、Redis持久化之RDB持久化】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!