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 abc@
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技术中哨兵模式解决____问题。 主从切换