持久化-save配置与工作原理|学习笔记

简介: 快速学习持久化-save配置与工作原理

开发者学堂课程【Redis 入门到精通(进阶篇)持久化-save配置与工作原理】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13421


持久化-save配置与工作原理

 

内容介绍

一、反复执行保存指令,忘记了怎么办?不知道数据产生了多少变化,何时保存?

二、RDB启动方式——save 配置

三、RDB启动方式——save 配置原理

 

一、反复执行保存指令,忘记了怎么办?不知道数据产生了多少变化,何时保存?

自动执行

谁:redis 服务器发起指令(基于条件)

什么时间:满足条件

干什么事情:保存数据

 

二、 RDB 启动方式——save 配置

1、配置

save second changes

2、作用

满足限定时间范围内 key 的变化数量达到指定数量即进行持久化

3、参数

second:监控时间范围

changes:监控key的变化量

例:second 配100,changes 配10,这100秒内执行了10个 key 的变化,不管在第5秒达成还是在第99秒达成,都会马上进行持久化。若要超过这个时间,设定100秒内10个变,结果100秒内9个变化,到期没有key在变化,则要重新计时。下一次持久化会把整个进行拷贝,是快照的思想。

4、位置

在conf 文件中进行配置

5、范例

save 900 1(15分钟内变化一个存一个,若15分钟没有变化不进行保存,频度设的会低)

save 300 10(300秒内10个发生变化,即5分钟内变化5个存一次)

save 60  10000(每一分钟内有10000个发生变化就会存一次)

注:这种设置通常根据自己的业务需要进行设置,另外前面大,后面小,是一个较为普遍的设计经验。

6、进行操作

为了不影响实验效果,把所有东西清掉

1)、改配置

[root@localhost redis-4.0.0]#cd conf

[root@localhost conf]# vim redis-6379.conf

2)、敲击回车加上配置

save 10 2(配置成10秒2个发生变化进行持久化)

3)、保存后启动指令

[root@localhost conf]# redis-serve redis-6379.conf

[root@localhost conf]#

4)、启动右侧客户端并加数据

[root@localhost redis-4.0.0]# redis-cli

127.0.0.1:6379>set name 123

ok

127.0.0.1:6379>

5)、左侧服务端进入data目录下

[root@localhost conf]# redis-serve redis-6379.conf

[root@localhost conf]# cd ..

[root@localhost redis-4.0.0]# cd data

[root@localhost data]#ll

total12

-rw-r--r--,1 root root 11527 Oct 13 04:20 6379.log

[root@localhost data]#ll

此时文件没有出来,因为只改变了一个key

6)、分别在左右侧再进行一次

右侧:[root@localhost redis-4.0.0]# redis-cli

127.0.0.1:6379>set name 123

ok

127.0.0.1:6379>set age 39

ok

127.0.0.1:6379

左侧:[root@localhost conf]# redis-serve redis-6379.conf

[root@localhost conf]# cd ..

[root@localhost redis-4.0.0]# cd data

[root@localhost data]#ll

total12

-rw-r--r--,1 root root 11527 Oct 13 04:20 6379.log

[root@localhost data]#ll

total16

-rw-r--r--,1 root root 11852 Oct 13 04:20 6379.log

-rw-r--r--,1 root root   177 Oct 13 04:20 dump-6379.rdb

[root@localhost data]#

此时已经多了一个文件,两个key 发生变化后接着进行

7)、左右侧接着进行

右侧:[root@localhost redis-4.0.0]# redis-cli

127.0.0.1:6379>set name 123

ok

127.0.0.1:6379>set age 39

ok

127.0.0.1:6379>set age 40

ok

127.0.0.1:6379>

左侧:[root@localhost conf]# redis-serve redis-6379.conf

[root@localhost conf]# cd ..

[root@localhost redis-4.0.0]# cd data

[root@localhost data]#ll

total12

-rw-r--r--,1 root root 11527 Oct 13 04:20 6379.log

[root@localhost data]#ll

total16

-rw-r--r--,1 root root 11852 Oct 13 04:20 6379.log

-rw-r--r--,1 root root   177 Oct 13 04:20 dump-6379.rdb

[root@localhost data]#ll

total 16

-rw-r--r--,1 root root 11852 Oct 13 04:20 6379.log

-rw-r--r--,1 root root   177 Oct 13 04:20 dump-6379.rdb

[root@localhost data]#

此时文件没有变化,接着进行

右侧:[root@localhost redis-4.0.0]# redis-cli

127.0.0.1:6379>set name 123

ok

127.0.0.1:6379>set age 39

ok

127.0.0.1:6379>set age 40

ok

127.0.0.1:6379>set name 321

ok

127.0.0.1:6379>

左侧:[root@localhost conf]# redis-serve redis-6379.conf

[root@localhost conf]# cd ..

[root@localhost redis-4.0.0]# cd data

[root@localhost data]#ll

total12

-rw-r--r--,1 root root 11527 Oct 13 04:20 6379.log

[root@localhost data]#ll

total16

-rw-r--r--,1 root root 11852 Oct 13 04:20 6379.log

-rw-r--r--,1 root root   177 Oct 13 04:20 dump-6379.rdb

[root@localhost data]#ll

total 16

-rw-r--r--,1 root root 11852 Oct 13 04:20 6379.log

-rw-r--r--,1 root root   177 Oct 13 04:20 dump-6379.rdb

[root@localhost data]#ll

total 16

-rw-r--r--,1 root root  12177 Oct 13 04:21 6379.log

-rw-r--r--,1 root root    178 Oct 13 04:21 dump-6379.rdb

[root@localhost data]#

此时文件发生变化,因为两个 key 发生变化,

在右侧进行 get name、get key 看左侧是否发生变化

右侧:127.0.0.1:6379>get name

“321”

127.0.0.1:6379>get age

“40”

127.0.0.1:6379>

左侧接着进行依旧没有变化。

右侧执行 del name

右侧:127.0.0.1:6379>del name

(integer)1

左侧文件依旧没有发生变化

右侧执行set age 41

右侧:127.0.0.1:6379>set age 41

ok

127.0.0.1:6379>

左侧进行执行文件发生变化。

从以上操作可以看出 serve 只要在时间范围内 key 发生变化,马上就去执行对应的指令。

 

三、 RDB 启动方式——save 配置原理

image.png

若执行上图三条指令,会发送指令至 redis,每一个指令返回后都有一个结果。

1、结果会如何影响 save?

1)、会对数据产生影响

2)、真正产生了影响

3)、不进行数据比对

不会拿现在的数据改变的值与原来的值进行比对,比如连续进行两次 redis,那么会认为两个 key 发生变化

总结:只要影响了一个数据,那么就认为产生了一个影响量

2、注意

1)、save 配置要根据实际业务情况进行设置,品读过高或过低都会出现性能问题,结果可能是灾难性的

2)、save 配置中对于 second 与 changes 配置通常具有互补对应关系,尽量不要设置成包含性关系

3)、save 配置启动后执行的是 bgsave 操作

相关文章
|
存储 缓存 测试技术
微服务注册中心的原理和实现方式
【2月更文挑战第19天】注册中心可以说是实现服务化的关键,因为服务化之后,服务提供者和服务消费者不在同一个进程中运行,实现了解耦,这就需要一个纽带去连接服务提供者和服务消费者,而注册中心就正好承担了这一角色。
|
存储 监控 安全
如何确保 React Native 热更新的安全性?
确保React Native热更新的安全性至关重要
|
10月前
|
安全 数据挖掘 BI
|
Java 关系型数据库 数据库连接
【MyBatis】初步解析MyBatis:实现数据库交互与关系映射的全面指南
【MyBatis】初步解析MyBatis:实现数据库交互与关系映射的全面指南
1159 1
|
存储 SQL Cloud Native
揭秘数据库技术的核心与未来:从架构到应用
一、引言 数据库技术是当代信息系统中不可或缺的一部分,它为企业和个人提供了可靠、高效的数据管理解决方案
|
自然语言处理 Shell 开发者
|
Linux
kali/debian/snap-store debain/linux的软件商店下载
kali/debian/snap-store debain/linux的软件商店下载
801 0
|
存储 XML 缓存
01-PDI(Kettle)简介与安装
文章目录 01-PDI(Kettle)简介与安装 PDI(Kettle)简介 Kettle安装 Kettle核心知识点
01-PDI(Kettle)简介与安装
|
Prometheus 运维 监控
Neo4j 企业版和系统运维系统监控
Neo4j 企业版和系统运维系统监控
733 0
Neo4j 企业版和系统运维系统监控