Redis【Redis数据安全(持久化机制概述、RDB持久化机制实战 、AOF持久化机制实战、如何选用持久化方式、事务的概念与ACID特性) 】(五)-全面详解(学习总结---从入门到深化)

 

目录

Redis数据安全_持久化机制概述 

持久化机制概述 

持久化机制的意义 

Redis提供了两个不同形式的持久化方式 

Redis数据安全_RDB持久化机制实战 

RDB是什么 

配置dump.rdb文件 

触发机制-主要三种方式 

RDB配置

配置新的保存规则 

 flushall

save与bgsave 

高级配置 

stop-writes-on-bgsave-error

rdbcompression 

rdbchecksum 

恢复数据 

 Redis数据安全_AOF持久化机制实战

 AOF是什么

 AOF默认不开启

 AOF启动/修复/恢复

开启AOF

AOF同步频率设置 

 Redis数据安全_如何选用持久化方式

 不要仅仅使用RDB

 也不要仅仅使用AOF

 综合使用AOF和RDB两种持久化机制

  Redis事务_事务的概念与ACID特性

 数据库层面事务

 数据库事务的四大特性

 Redis事务

 Redis事务三大特性

 Redis事务执行的三个阶段

Redis事务_Redis事务基本操作 

Multi、Exec、discard

 例子

 Redis集群_主从复制

 概述

 解决办法

 什么是主从复制

 Redis集群_主从复制环境搭建

 编写配置文件

新建redis6379.conf

新建redis6380.conf

新建redis6381.conf

启动三台redis服务器

查看系统进程

查看三台主机运行情况

配从库不配主库

 在主机上写,在从机上可以读取数据

 Redis集群_主从复制原理剖析

 主从复制可以分为3个阶段

 复制过程大致分为6个过程

 主从同步策略

 Redis集群_ 哨兵监控概述

 Redis主从复制缺点

 主从切换技术

 哨兵概述


Redis数据安全_持久化机制概述 

由于Redis的数据都存放在内存中,如果没有配置持久化,Redis重启后数据就全丢失了,于是需要开启 Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据。 

持久化机制概述 

对于Redis而言,持久化机制是指把内存中的数据存为硬盘文件, 这样当Redis重启或服务器故障时能根 据持久化后的硬盘文件恢复数据。

持久化机制的意义 

redis持久化的意义,在于故障恢复。比如部署了一个redis,作为cache缓存,同时也可以保存一些比较 重要的数据。

 

Redis提供了两个不同形式的持久化方式 

实时学习反馈

1. Redis持久化机制主要解决___问题。

A 数据重复

B 数据不可靠

C 数据丢失

D 数据量大

2. 开启Redis的持久化功能,将数据保存到____上。

A 内存

B 磁盘

C 数据库

D 云平台

Redis数据安全_RDB持久化机制实战 

RDB是什么 

在指定的时间间隔内将内存的数据集快照写入磁盘,也就是行话讲的快照,它恢复时是将快照文件直接读到内存里。

 

配置dump.rdb文件 

RDB保存的文件,在redis.conf中配置文件名称,默认为dump.rdb。

 rdb文件的保存位置,也可以修改。默认在Redis启动时命令行所在的目录下。

rdb文件的保存路径,也可以修改。默认为Redis启动时命令行所在的目录下

dir ./ 

触发机制-主要三种方式 

RDB配置

 

配置新的保存规则 

给redis.conf添加新的快照策略,30秒内如果有5次key的变化,则触发快照。配置修改后,需要重启 Redis服务。

save 3600 1
save 300 100
save 60 10000
save 30 5

 flushall

执行flushall命令,也会触发rdb规则。

save与bgsave 

高级配置 

stop-writes-on-bgsave-error

默认值是yes。当Redis无法写入磁盘的话,直接关闭Redis的写操作。

rdbcompression 

默认值是yes。对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算 法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照 会比较大。

rdbchecksum 

默认值是yes。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加 大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

恢复数据 

只需要将rdb文件放在Redis的启动目录,Redis启动时会自动加载dump.rdb并恢复数据。

实时学习反馈

1. Redis技术中下列____是RDB缺点。

A 恢复速度快

B 节省空间

C 会丢失最后一次快照后的所有修改

D 适合大规模的数据恢复

2. Redis技术中RDB持久化如何表示30秒内如果至少有100个 key的值变化,则保存。

A save 100 3

B 3 save 100

C save 30 100

D save 100 30

 Redis数据安全_AOF持久化机制实战

 AOF是什么

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来。

 AOF默认不开启

可以在redis.conf中配置文件名称,默认为appendonly.aof。

 

 AOF启动/修复/恢复

开启AOF

设置Yes:修改默认的appendonly no,改为yes

appendonly yes

 设置数据。

set k11 v11
set k12 v12
set k13 v13
set k14 v14
set k15 v15

AOF同步频率设置 

实时学习反馈

1. Redis技术中AOF持久化主要解决___问题。

A 节省磁盘空间

B 恢复备份速度要慢

C 比起RDB占用更多的磁盘空间

D 数据丢失

2.Redis技术中AOF同步频率设置每秒记录日志一次。

A appendfsync always

B appendfsync everysec

C appendfsync no

D appendonly yes

 Redis数据安全_如何选用持久化方式

 不要仅仅使用RDB

RDB数据快照文件,都是每隔5分钟,或者更长时间生成一次,这个时候就得接受一旦redis进程宕机, 那么会丢失最近5分钟的数据。

 也不要仅仅使用AOF

1. 你通过AOF做冷备,没有RDB做冷备,来的恢复速度更快。

2. RDB每次简单粗暴生成数据快照,更加健壮,可以避免AOF这种复杂的备份和恢复机制的bug。

 综合使用AOF和RDB两种持久化机制

用AOF来保证数据不丢失,作为数据恢复的第一选择,用RDB来做不同程度的冷备,在AOF文件都丢失或损坏不可用的时候,还可以使用RDB来进行快速的数据恢复。

 

实时学习反馈

1. Redis技术中企业中该如何选择持久化机制。

A 仅仅使用RDB

B 仅仅使用AOF

C 综合使用AOF和RDB两种持久化机制

D 不适用持久化

  Redis事务_事务的概念与ACID特性

 数据库层面事务

在数据库层面,事务是指一组操作,这些操作要么全都被成功执行,要么全都不执行。

 数据库事务的四大特性

 Redis事务

Redis事务是一组命令的集合,一个事务中的所有命令都将被序列化,按照一次性、顺序性、排他性的执行一系列的命令。

 

 Redis事务三大特性

 Redis事务执行的三个阶段

实时学习反馈

1. Redis事务说法错误的是__。

A 没有隔离级别的概念

B 单独的隔离操作

C 保证原子性

2. Redis实现事务,是基于____。

A 链表

B 数组

C 队列

D 栈

Redis事务_Redis事务基本操作 

Multi、Exec、discard

事务从输入Multi命令开始,输入的命令都会依次压入命令缓冲队列中,并不会执行,直到输入Exec后, Redis会将之前的命令缓冲队列中的命令依次执行。组队过程中,可以通过discard来放弃组队。

 例子

正常执行

127.0.0.1:6379> set t1 1
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set id 12
QUEUED
127.0.0.1:6379(TX)> get id
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> get t1
QUEUED
127.0.0.1:6379(TX)> EXEC
1) OK
2) "12"
3) (integer) 2
4) (integer) 3
5) "3"

放弃事务

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set name z3
QUEUED
127.0.0.1:6379(TX)> set age 29
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> DISCARD
OK

全体连坐

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set name z3
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> get t1
QUEUED
127.0.0.1:6379(TX)> set email
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379(TX)> exec
(error) EXECABORT Transaction discarded because of previous errors.

 冤有头,债有主

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set age 11
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> set email [email protected]
QUEUED
127.0.0.1:6379(TX)> incr email
QUEUED
127.0.0.1:6379(TX)> get age
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) (integer) 5
3) OK
4) (error) ERR value is not an integer or out of range
5) "11"

注意:运行时错误,即非语法错误,正确命令都会执行,错误命令返回错误。

实时学习反馈

1. Redis技术中如何开启一个事务。

A multi

B start

C exec

D save

 Redis集群_主从复制

 概述

在现有企业中80%公司大部分使用的是redis单机服务,在实际的场景当中单一节点的redis容易面临风险。 

 解决办法

要实现分布式数据库的更大的存储容量和承受高并发访问量,我们会将原来集中式数据库的数据分别存储到其他多个网络节点上。

 

 什么是主从复制

 

 

实时学习反馈

1.单机Redis会遇到____问题。

A 响应

B 容量

C 速度

D 兼容

2. 下列不是Redis主从复制作用的是____。

A 高可用

B 负载均衡

C 故障恢复

D 兼容性

 Redis集群_主从复制环境搭建

 编写配置文件

新建redis6379.conf

include /usr/local/redis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb

新建redis6380.conf

include /usr/local/redis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb

新建redis6381.conf

include /usr/local/redis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb

启动三台redis服务器

./redis-server ../redis6379.conf
./redis-server ../redis6380.conf
./redis-server ../redis6381.conf

查看系统进程

[root@localhost src]# ps -ef |grep redis
root 40737 1 0 22:05 ? 00:00:00 ./redis-server *:6379
root 40743 1 0 22:05 ? 00:00:00 ./redis-server *:6380
root 40750 1 0 22:05 ? 00:00:00 ./redis-server *:6381
root 40758 40631 0 22:05 pts/0 00:00:00 grep --color=auto redis

查看三台主机运行情况

#打印主从复制的相关信息
./redis-cli -p 6379
./redis-cli -p 6380
./redis-cli -p 6381
127.0.0.1:6379> info replication
127.0.0.1:6380> info replication
127.0.0.1:6381> info replication

配从库不配主库

语法格式:

slaveof <ip> <port>

示例:在6380和6381上执行。

127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
OK

 在主机上写,在从机上可以读取数据

set k1 v1

 Redis集群_主从复制原理剖析

 主从复制可以分为3个阶段

1、连接建立阶段(即准备阶段)

2、数据同步阶段

3、命令传播阶段

 复制过程大致分为6个过程

 1、保存主节点(master)信息。

      执行 slaveof 后 查看状态信息

info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up

2、从节点(slave)内部通过每秒运行的定时任务维护复制相关逻辑,当定时任务发现存在新的主 节点后,会尝试与该节点建立网络连接

 3、从节点与主节点建立网络连接

从节点会建立一个 socket 套接字,从节点建立了一个端口为51234的套接字,专门用于接受主节点发送 的复制命令。

 4、发送ping命令

连接建立成功后从节点发送 ping 请求进行首次通信。

 

 4、权限验证。

如果主节点设置了 requirepass 参数,则需要密码验证,从节点必须配置 masterauth 参数保证与主节 点相同的密码才能通过验证;如果验证失败复制将终止,从节点重新发起复制流程。

5、同步数据集。

主从复制连接正常通信后,对于首次建立复制的场景,主节点会把持有的数据全部发送给从节点,这部分操作是耗时最长的步骤。

 主从同步策略

主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何 时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进 行全量同步。

 例如

保存一个缓存

set name baizhan

记录命令为

$3 \r \n
set \r \n
$4 \r \n
name \r \n
$5 \r \n
baizhan \r \n

6、命令持续复制。

当主节点把当前的数据同步给从节点后,便完成了复制的建立流程。接下来主节点会持续地把写命令发送给从节点,保证主从数据一致性。

 1.Redis技术中如何设置Redis密码。requirepass

2. Redis主从复制技术中主从刚刚连接的时候,进行___同步。全量

 Redis集群_ 哨兵监控概述

 Redis主从复制缺点

当主机 Master 宕机以后,我们需要人工解决切换。

 

 主从切换技术

当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造 成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式

 哨兵概述

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

 

 

 1.Redis技术中哨兵模式解决____问题。 主从切换

猜你喜欢

转载自blog.csdn.net/m0_58719994/article/details/131360962